Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Разница времени, отображаемого в FE и BE на +1 час (http://forum.typo3.ru/showthread.php?t=10914)

ms9 09.09.2013 23:09

Разница времени, отображаемого в FE и BE на +1 час
 
Здравствуйте!

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

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

PHP код:

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

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

Нечно подобное тут и тут.

Версия 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 это, это и это.

Т.о. дело не в разнице во времени м-ду 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.


Часовой пояс GMT +4, время: 19:23.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot