2016-04-09 4 views
1

Я создал небольшое расширение, которое использует datetimes для просмотра определенных событий (даты события и времени события), но я всегда сталкиваюсь с проблемами, если попытаюсь получить правильное время от базы данных до интерфейса.Как я могу избежать проблем с datetime в TYPO3?

я могу установить DateTime для каждого события с помощью TYPO3 бэкэнд:

enter image description here

Но если я пытаюсь получить это значение на веб-интерфейсе, как:

<f:format.date format="d.m.Y - H:i:s">{event.appointment}</f:format.date> 

Тогда выход не "10.04.2016 - 08:00:00" это "10.04.2016 - 10:00:00".

Как я могу избежать такого поведения? Я также установил часовой пояс с помощью инструмента установки:

[SYS][phpTimeZone] = Europe/Berlin 

но я всегда получаю неправильное время и время. Если я пытаюсь что-то вроде этого:

DebugUtility::debug(new \DateTime()); 

тогда я получаю правильный вывод:

{"date":"2016-04-09 20:23:38.000000","timezone_type":3,"timezone":"Europe\/Berlin"} 

Если я взгляну на базе данных я могу видеть, что правильные даты и время хранится:

enter image description here

Так что я не знаю, почему я получил неправильное время и любые предложения?

ответ

1

Существует некоторая несогласованность с преобразованием даты в TYPO3, который ведет себя по-разному в TCE и в Extbase. Extbase считает, что все даты хранятся в БД в UTC, поэтому в процессе сопоставления данных конвертирует вашу дату из UTC в теоретически локальное время (IMHO, которое не должно быть сделано или должно быть настроено с помощью инструмента установки), грязный, но трюк, обманывающий TYPO3 , только в Install Tool>All configurations найдите [SYS][phpTimeZone] и установите значение UTC.

Таким образом, Extbase будет думать, что вы находитесь в зоне UTC, и вам не нужно ничего менять в php.ini.

+0

О, хорошо, спасибо, как шарм. – Fox

Смежные вопросы