PHP Zend формат даты - PullRequest
       25

PHP Zend формат даты

13 голосов
/ 01 июня 2011

Я хочу ввести временную метку в формате ниже в базу данных.

yyyy-mm-dd hh:mm:ss

Как я могу получить в формате выше?

Когда я использую

$date = new Zend_Date();

возвращает месяц дд, гггг чч: мм: сс PM

Я также использую календарь JavaScript для вставки выбранной даты и возвращается в дд-мм-гггг формат

Теперь я хочу преобразовать оба формата в гггг-мм-дд чч: мм: сс, чтобы их можно было вставить в базу данных. Поскольку формат даты не соответствует формату поля базы данных, дата не вставляется и заполняется только * 00-00-00 00: 00: 00 *

Спасибо заответить

Ответы [ 6 ]

24 голосов
/ 01 июня 2011

Не уверен, поможет ли это вам, но попробуйте использовать:

 // to show both date and time,
 $date->get('YYYY-MM-dd HH:mm:ss');

 // or, to show date only
 $date->get('YYYY-MM-dd') 
13 голосов
/ 01 июня 2011

Технически, @stefgosselin дал правильный ответ для Zend_Date, но Zend_Date совершенно излишне просто для того, чтобы узнать текущее время в обычном формате.Zend_Date невероятно медленный и громоздкий в использовании по сравнению с собственными расширениями даты, связанными с PHP.Если вам не нужен перевод или локализация в выводе Zend_Date (а вы, очевидно, этого не делаете), держитесь от него подальше.

Используйте для этого встроенную в PHP date функцию , например:

echo date('Y-m-d H:i:s');

или API процедурного времени DateTime

echo date_format(date_create(), 'Y-m-d H:i:s');

или API объекта DateTime

$dateTime = new DateTime;
echo $dateTime->format('Y-m-d H:i:s');

Неделайте общую ошибку, используя каждый компонент, предлагаемый Zend Frameworks, только потому, что он его предлагает.В этом нет абсолютно никакой необходимости, и на самом деле, если вы можете использовать собственное расширение PHP для достижения того же результата с меньшими или сопоставимыми усилиями, вам лучше использовать собственное решение.

Кроме того, если вы собираетесь сохранить дату в своей базе данных, использовали ли вы какой-либо из DateTime связанных столбцов в вашей базе данных ?Предполагая, что вы используете MySql, вы можете использовать столбец Timestamp или столбец Date ISO8601.

4 голосов
/ 02 июня 2011

Вот как я это сделал:

abstract class App_Model_ModelAbstract extends Zend_Db_Table_Abstract
{

    const DATE_FORMAT = 'yyyy-MM-dd';

    public static function formatDate($date, $format = App_Model_ModelAbstract::DATE_FORMAT)
    {
        if (!$date instanceof Zend_Date && Zend_Date::isDate($date)) {
            $date = new Zend_Date($date);
        }

        if ($date instanceof Zend_Date) {
            return $date->get($format);
        }

        return $date;
    }
}

таким образом, вам не нужно беспокоиться о том, является ли это на самом деле экземпляром даты Zend, вы можете передать строку или что-то ещеэто свидание

3 голосов
/ 23 октября 2012

простой способ использовать Zend Date - создать в своих бизнес-объектах определенную функцию, которая позволяет параметрировать эту функцию в формате даты. Вы можете найти хороший пример по этому адресу http://www.pylejeune.fr/framework/utiliser-les-date-avec-zend_date/

1 голос
/ 01 апреля 2013

это я так и сделал:
Zend_Date::now->toString('dd-MM-yyyy HH:mm:ss')
выход из этого формата: «24-03-2012 13:02:01»
и вы можете изменить свой формат даты

0 голосов
/ 01 ноября 2013

Я всегда использовал метод $date->__toString('YYYY-MM-dd HH-mm-ss'); в прошлом, но сегодня не работал.Я получал вывод по умолчанию '1 ноября 2013 г. 12:19:23 PM'

Итак, сегодня я использовал $date->get('YYYY-MM-dd HH-mm-ss');, как упоминалось выше.Кажется, решил мою проблему.

Более подробную информацию об этих форматах вы можете найти здесь: http://framework.zend.com/manual/1.12/en/zend.date.constants.html

...