@edik89

Как сделать, чтобы не сбивались даты в YII2?

Для вывода дат на сайте использую Yii::$app->formatter->asDate(). Тип данных в базе mysql - DATE. По какой то причине, каждую ночь в районе 23 : 00, даты перескакивают на один день вперед. Напр-р, было 01 Aug - 14 Aug 2016 стало 02 Aug - 15 Aug 2016. Через несколько часов все становится снова нормальным. В чем может быть дело?
Даты вывожу следующим образом:
if ($this->end_date != false) {
			return Yii::$app->formatter->asDate($this->start_date, 'php:d M') . ' - ' . Yii::$app->formatter->asDate($this->end_date, 'php:d M Y');	
		} else {
			return Yii::$app->formatter->asDate($this->start_date, 'php:d M');
		}


В настройках указана такая же timezone, что и на сервере:
'components' => [
        'formatter' => [
            'defaultTimeZone' => 'Europe/Moscow'
        ],
...


Заметил, что если вывожу дату через Yii::$app->formatter->asDate($post['time'], 'php:Y-m-d H:i:s'), то время спешит на час. Через date('Y-m-d H:i:s', strtotime($post['time'])) все отлично выводится.
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ответы на вопрос 3
@edik89 Автор вопроса
Проблема была связана с переводом часов 26 октября 2014 года. Решилось обновлением библиотеки libicu52.
Ответ написан
Комментировать
@VitGun
таймзоны на сервере БД и WEB различны, например
Ответ написан
Demetriy
@Demetriy
веб и мобильная разработка
Вы указываете только у компонента formatter, лучше задавать в целом по системе, т.е. заходите в main.php и одним из параметров:

'timeZone' => 'Europe/Moscow'

+

если у вас какой-нибудь шаблон advanced, т.е. несколько папок на проект (common, console, frontend), то это надо указать во всех конфигах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы