PDA

Просмотр полной версии : Разница времени, отображаемого в FE и BE на +1 час


ms9
09.09.2013, 23:09
Здравствуйте!

Столкнулся с любопытной проблемой, которая проявляет себя в том, что в бэкэнде и фронтэнде время отображается с разницей +1 час.

Проблему решил заплаткой в экстеншине, который отдает время в FE так:

... $row['some_row']-60*60 ...

Но есть вероятность, что проблема может проявить себя заново после смены летного времени на зимнее.

Нечно подобное тут (http://forge.typo3.org/issues/49449) и тут (http://forge.typo3.org/issues/15133).

Версия TYPO3 4.7.10. Возможно, до меня её апдейтили с более ранней версии.

PHP timezone установлена корректно.

Возможно, кто-либо сталкивался или без столкновений знает, как решить проблему более корректно, чем хардкодом?

dmartynenko
10.09.2013, 14:28
Возможно разница во времени в PHP и MySQL?

ms9
10.09.2013, 15:51
Спасибо за гипотезу!

Проверяю так.

SELECT name FROM mysql.time_zone_name;

Отдает 0. Все таблицы про время в MYSQL пусты.

SELECT @@global.time_zone, @@session.time_zone;

Отдает дважды SYSTEM.

Я так понял, что время в MySQL стоит системное. Системное время настроено правильно, также как и время в PHP.

Однако, пытаюсь заполнить базу недостающими данными.

Команда mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql загрузила в базу 1715 записей, некоторые пропустила.

SET GLOBAL time_zone = "Europe/Minsk";
SET SESSION time_zone = "Europe/Minsk";

Установилось соответствующее время.

Обновил кэш в TYPO3. Результат со временем без изменений. +1 час

Откатываю время в MySQL обратно.

SET GLOBAL time_zone = 'SYSTEM';

Использовал для работы с MySQL это (http://waredom.ru/36), это (http://dev.mysql.com/doc/refman/5.0/en/time-zone-upgrades.html) и это (http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html).

Т.о. дело не в разнице во времени м-ду PHP и MySQL.

dmartynenko
10.09.2013, 16:24
А если в одном и том же скрипте сделать ?

print_r date(DATE_ATOM, time());
print_r mysql_fetch_array(mysql_query("SELECT NOW()"));

ms9
10.09.2013, 16:38
2013-09-10T14:37:17+03:00

Array
(
[0] => 2013-09-10 14:37:17
[NOW()] => 2013-09-10 14:37:17
)

Dmitry Dulepov
08.10.2013, 13:21
Проверить serverTimeZone и phpTimeZone в Install tool.

ms9
09.10.2013, 14:42
Благодарю за совет, однако изменение этих свойств ни к чему не привело. Было решено умножить данные в поле времени на *60*60.