[Решено] Очередная проблема с форматированием даты

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

[Решено] Очередная проблема с форматированием даты

Сообщение Cacatuidae »

Форматирование вида:

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

        $unix_time_start = strtotime('08.03.2017');
        // Native
        var_dump(date('d.m.Y H:i:s', $unix_time_start));
        // YII.ICU
        var_dump(Yii::$app->formatter->asDatetime($unix_time_start, 'dd.MM.YYYY HH:mm:ss'));
        // YII.PHP
        var_dump(Yii::$app->formatter->asDatetime($unix_time_start, 'php:d.m.Y H:i:s'));
Выдает такой результат:

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

// Native
string(19) "08.03.2017 00:00:00"
// YII.ICU
string(19) "08.03.2017 01:00:00"
// YII.PHP
string(19) "08.03.2017 01:00:00
Настройки:

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

PHP 7.1
ICU 52.1
INTL 1.1.0
Yii config:
 - language: ru-RU
 - timeZone: Europe/Moscow
yii requirements.php:

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

...
Intl extension: OK
ICU version: OK
ICU Data version: OK
...
Прошу подсказать куда капать, почему сдвиг на 1 час? Уже все что можно перепробовал.
Последний раз редактировалось Cacatuidae 2017.03.08, 13:37, всего редактировалось 1 раз.
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Очередная проблема с форматированием даты

Сообщение Onotole »

ICU обновите. Последняя версия 58.2
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Re: Очередная проблема с форматированием даты

Сообщение Cacatuidae »

Благодарю. Скомпилирован под 58.2 и все заработало.

Мысли в слух - непонятно тогда почему в требованиях yii значится минимальная версия ICU 49.2
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Re: Очередная проблема с форматированием даты

Сообщение Cacatuidae »

В интернете довольно непросто найти точную информацию под компиляцию ICU в версиях PHP 7-7.1
Распишу 100% шаги, которые сработали у меня на ubuntu 12.04 (php 7.1)
Источник: http://light-code.ru/blog/post/update-icu-in-ubuntu/
1. Переключаемся на root: 2. Создаем временную директорию

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

cd ~; mkdir tmp; cd tmp;
3. Установим компилятор (возможно установлен уже)

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

apt-get install g++
4. Удаляем расширение intl

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

apt-get remove php7.1-intl
5. Заходим http://site.icu-project.org/download => http://site.icu-project.org/download/58 и качаем послед. версию

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

cd ~/tmp; mkdir icu; cd icu; wget http://download.icu-project.org/files/icu4c/58.2/icu4c-58_2-src.tgz
6. Распаковка

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

tar zxvf icu4c-58_2-src.tgz
7. Компиляция ICU

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

cd ~/tmp/icu/icu/source; ./configure --prefix=/opt/icu582 && make && make install
8. Качаем source php

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

cd ~/tmp; mkdir build-intl; cd build-intl; git clone https://github.com/php/php-src.git
9. Смотрим какая точная версия php у нас установлена (если на сервере установлено несколько версий php, то нужно указать полный путь до php) 10. Переходим на ветку нужной версии php

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

git checkout php-7.1.2
11. Настраиваем и компилируем расширение

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

cd ~/tmp/build-intl/php-src/ext/intl
phpize
./configure --with-php-config=/usr/bin/php-config --with-icu-dir=/opt/icu582
make
12. Устанавливаем расширение

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

make install
nano /etc/php/7.1/fpm/php.ini (в конце добавляем extension=intl.so)
nano /etc/php/7.1/cli/php.ini (в конце добавляем extension=intl.so)
service php7.1-fpm restart
13. Проверка CLI

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

php --info | grep ICU
Результат должен быть примерно таким:
323:ICU version => 58.2
324:ICU Data version => 58.2
14. Проверка FPM
Создаете info.php c

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

<?php phpinfo();?>
Обращаетесь к файлу через браузер и ищите ICU
Последний раз редактировалось Cacatuidae 2017.03.08, 13:22, всего редактировалось 1 раз.
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Очередная проблема с форматированием даты

Сообщение Onotole »

Поправочка

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

php --info | grep ICU
Так как это linux и регистр имеет значение
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Re: Очередная проблема с форматированием даты

Сообщение Cacatuidae »

Onotole писал(а): 2017.03.08, 13:19 Поправочка

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

php --info | grep ICU
Так как это linux и регистр имеет значение
Спасибо, подправил.
Ответить