Yii2: Сохранение и отображение даты/времени

Должно быть, это одна из самых часто возникающих, и в тоже время, очень простая задача для реализации в Yii 2.0.

Зачастую мы сохраняем дату/время в базе данных в одном формате, а вывести на экран ее нужно в другом формате.

Многие уходят огородами и изобретают свои велосипеды. Ниже представлены несколько простых советов, которые помогут в освоении работы с данными в формате дата/время в фреймворке Yii2.

1. Все уже придумано до нас

Можно использовать готовое расширение yii2-datecontrol, которое позволяет глобально определить разные форматы для сохранения и отображения в представлении. Данное расширение можно использовать в большинстве случаев форм, оно доступно как в инпутах, так и виджетах.

2. Использовать поведение TimeStamp для автоматического сохранения данных в базу

Например, если нужно автоматически сохранять дату/время создания/обновления записи, можно использовать представление \yii\behaviors\TimeStampBehavior. Это поведение можно настроить на работу со стандартными событиями INSERT и UPDATE или создать свои события.

2.1. Формат сохранения даты/времени

Для сохранения timestamp в нужном формате в поле типа  integer поведение нужно настроить примерно так:

3. Устанавливаем глобальные форматы

Можно настроить yii\i18n\formatter для определения глобальных форматов отображения даты/времени для нужной локали. Пример:

В дальнейшем отображение даты сведется к простому:

Теперь в любом контроллере или модели можно использовать описанные выше функции для преобразования даты/времени из строки в нужный формат:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *