Страница 1 из 1

Неверное отображение datetime

Добавлено: 2019.07.18, 10:06
proctoleha
Продакшен: сервер на Debian 8, PHP 7.0.28-1~dotdeb+8.1, Yii2 version 2.0.16, timeZone на сервере Europe/Moscow

В файле
web.php timeZone => 'Europe/Moscow',
php.ini timeZone = 'Europe/Moscow'

Код:

Код: Выделить всё

        echo "<pre>";
        print_r(date('d-m-Y H:i', 1561713971));
        echo "</pre>";
        
        echo "<pre>";
        print_r(Yii::$app->formatter->asDatetime(1561713971));
        echo "</pre>";
        
        $date = new DateTime();
        $timeZone = $date->getTimezone();
        
        echo "<pre>";
        print_r($timeZone->getName());
        echo "</pre>";
        
        $utc_offset = date('Z') / 3600;
        echo "<pre>";
        print_r($utc_offset);
        echo "</pre>";
Скрин с боевого сервера

Изображение

Вопрос: почему Yii2 форматер показывает время на час больше?

Re: Неверное отображение datetime

Добавлено: 2019.07.18, 10:49
urichalex
Обновить ICU. В дебиане по умолчанию он какой-то старой версии, в которой в Europe/Moscow до сих пор +4

Re: Неверное отображение datetime

Добавлено: 2019.07.18, 12:33
proctoleha
urichalex писал(а): 2019.07.18, 10:49 Обновить ICU. В дебиане по умолчанию он какой-то старой версии, в которой в Europe/Moscow до сих пор +4
Спасибо. Более точно можно сказать, что необходимо обновить и ICU и PHP intl

На локалке:

Код: Выделить всё

alex@alex-Aspire-ES1-572 ~ $ PHP_ICU_VERSION=$(php -r 'echo defined("INTL_ICU_VERSION") ? INTL_ICU_VERSION : "none";')
alex@alex-Aspire-ES1-572 ~ $ echo "PHP ICU version: $PHP_ICU_VERSION"
PHP ICU version: 64.1
На боевом:

Код: Выделить всё

root@cs79102:~# PHP_ICU_VERSION=$(php -r 'echo defined("INTL_ICU_VERSION") ? INTL_ICU_VERSION : "none";')
root@cs79102:~# echo "PHP ICU version: $PHP_ICU_VERSION"
PHP ICU version: 52.1