Zend Locale заставляет меня нервничать: неправильное представление даты - PullRequest
3 голосов
/ 05 января 2010

Сначала у меня были проблемы с вводом даты в мою базу данных см. Здесь . Теперь у меня проблемы с получением его в базу данных в нужном формате. Это мой код:

public function editAction()
    {
        if($this->_request->getParam('id')){
            $id = $this->_request->getParam('id');
            $data = $this->_evtObj->selectOneRow($id);
            // initialize the form
            //var_dump($data);
            $form = new JS_Form_EventForm();

            $array = $data->toArray(); 
            //$locale = Zend_Registry::get('locale');
            $locale = new Zend_Locale();
            $date1 = new Zend_Date($locale);
            $date1->set($array[0]['evt_startdate']);
            $array[0]['evt_startdate'] = $date1->get();
            $array[0]['evt_enddate'] = date('%d-%m-%Y',(string)$array[0]['evt_enddate']);
            $form->populate($array[0]);
            $this->view->form =$form;
        }

Как вы можете видеть, он заполняет форму датами из БД. В БД дата сохраняется как 2010-01-15. Как вы можете видеть в приведенном выше примере, я попробовал две вещи:

locale = new Zend_Locale();
$date1 = new Zend_Date($locale);
$date1->set($array[0]['evt_startdate']);
$array[0]['evt_startdate'] = $date1->get();

Это показывает дату как: '1262300400'

и

 $array[0]['evt_enddate'] = date('%d-%m-%Y',(string)$array[0]['evt_enddate']);

это показывает дату как: '% 01-% 01-% 1970'

Я хочу, чтобы дата отображалась как дд-мм-гггг

Как с этим бороться? Все эти финиковые дела сводят меня с ума.

Я бегу zf 1.9.6

есть идеи?

Ответы [ 2 ]

1 голос
/ 05 января 2010

Я бы предложил использовать что-то вроде этого

$date = new Zend_Date($array[0]['evt_startdate'],Zend_Date::DATES);
$array[0]['evt_startdate'] = $date1->toString('dd-MM-YYYY');

Документация

1 голос
/ 05 января 2010

Попробуйте date('d-m-Y', $array[0]['evt_enddate']) Кроме того, второй параметр на сегодняшний день должен быть меткой времени. Я не знаю, что находится внутри этого массива, который вы используете, но его, конечно, не нужно переводить в строку. Если вы хотите создать метку времени из отформатированной даты, используйте strftime ().

Если вы используете get() без аргументов, возвращается метка времени. Если вы хотите получить часть даты со временем из Zend_Date, используйте getDate() вместо get(). Это установит время на 00:00:00 и вернет его вместе с датой. Если вам нужна только часть даты, используйте get() с константой DATE_MEDIUM. Если вы просто хотите отформатировать из Zend_Date, используйте предложенный Питером Линдквистом ответ ниже.

Мнение : Лично я бы посоветовал вообще избегать Zend_Date. У меня сложилось впечатление, что он неудобен в использовании и довольно медленный по сравнению с собственными классами PHP DateTime и DateTimezone. В настоящее время я использую Zend_Date только для локализованного форматирования, потому что именно там он и светит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...