У меня две проблемы в моем маленьком скрипте. Я пытаюсь создать приложение, использующее Zend Framework 1.12.1, Doctrine, Zend_locale, Zend_Currency и Zend_Date.Странная ошибка в локализации Zend_Date
Дата:
В базе данных необходима дата в этом формате Y-M-D H: I: S, но каждый пользователь устанавливает свои региональные предпочтения в панели управления пользовательским. Поэтому, когда я получаю дату из базы данных, я должен ее преобразовать в выбранную локаль.
Это мой код:
<?php
$dboutdata = "4/3/13 12:00 AM"; // 4 March 2013 12:00 AM
$date = new Zend_Date($dboutdata, null, "en_US");
echo $date . "<br/>";
$date = new Zend_Date($dboutdata, null, "it_IT");
echo $date . "<br/>";
?>
это результат:
Apr 3, 13 12:00:00 AM
04/mar/13 12.00.00
Как вы можете видеть результат неправильно. Zend_Date смущает месяц со дня. Как мне решить эту проблему?
обновления:
/**
* Convert a date from yyyy/mm/dd formatted by the locale setting
*
* @param date $dbindata
* @return date formatted by the locale setting
*/
static public function formatDateOut($dbindata) {
if (empty ($dbindata))
return false;
$locale = Zend_Registry::get('Zend_Locale');
$date = new Zend_Date($dbindata, "yyyy-MM-dd HH:mm:ss", $locale);
return $date->toString(Zend_Date::DATETIME_SHORT, $locale);
}
/**
* Convert a date from Zend Locale selected to yyyy/mm/dd H:i:s
*
* @param string $dboutdata
* @return string Y-m-d H:i:s
*/
static public function formatDateIn($dboutdata) {
if (empty ($dboutdata))
return null;
$InDb = null;
$locale = Zend_Registry::get('Zend_Locale');
$date = new Zend_Date($dboutdata);
return $date->toString('yyyy-MM-dd HH:mm:ss');
}
Кроме того, если мне нужно, чтобы сохранить эту дату, как можно нормализовать его для того, чтобы сохранить его в базе данных?
С наилучшими пожеланиями
Привет Тим, спасибо за ответ! Я обновил вопрос, добавив ваше исправление, и теперь мне кажется, что он работает. Есть ли способ улучшить эти два метода? – Michelangelo