@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'])) все отлично выводится.
  • Вопрос задан
  • 290 просмотров
Пригласить эксперта
Ответы на вопрос 3
@edik89 Автор вопроса
Проблема была связана с переводом часов 26 октября 2014 года. Решилось обновлением библиотеки libicu52.
Ответ написан
Комментировать
@VitGun
таймзоны на сервере БД и WEB различны, например
Ответ написан
Demetriy
@Demetriy
веб и мобильная разработка
Вы указываете только у компонента formatter, лучше задавать в целом по системе, т.е. заходите в main.php и одним из параметров:

'timeZone' => 'Europe/Moscow'

+

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

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

Войти через центр авторизации
Похожие вопросы