Datetime 如何避免打字错误3中的日期时间问题?

Datetime 如何避免打字错误3中的日期时间问题?,datetime,typo3,Datetime,Typo3,我创建了一个小扩展,它使用datetimes来查看一些特定事件(事件日期和事件时间),但如果我试图从数据库到前端获取正确的datetime,我总是会遇到麻烦 我可以通过TYPO3后端设置每个事件的日期时间: 但如果我尝试在前端获得此值,如: <f:format.date format="d.m.Y - H:i:s">{event.appointment}</f:format.date> 但我的约会时间总是错的。如果我尝试这样的方法: DebugUtility::deb

我创建了一个小扩展,它使用datetimes来查看一些特定事件(事件日期和事件时间),但如果我试图从数据库到前端获取正确的datetime,我总是会遇到麻烦

我可以通过TYPO3后端设置每个事件的日期时间:

但如果我尝试在前端获得此值,如:

<f:format.date format="d.m.Y - H:i:s">{event.appointment}</f:format.date>
但我的约会时间总是错的。如果我尝试这样的方法:

DebugUtility::debug(new \DateTime());
然后我得到正确的输出:

{"date":"2016-04-09 20:23:38.000000","timezone_type":3,"timezone":"Europe\/Berlin"}
如果我查看数据库,我可以看到存储了正确的日期时间:


所以我不知道为什么我得到了错误的日期时间,有什么建议吗?

TYPO3中的日期转换存在一些不一致,它在TCE和Extbase中的行为不同。Extbase认为所有日期都存储在UTC的DB中,因此在数据映射过程中,将日期从UTC转换为理论上的本地时间(IMHO不应该这样做,或者应该通过安装工具进行配置),肮脏但有效的技巧是愚弄键入3,只需在
安装工具
所有配置
中找到
[SYS][phpTimeZone]
设置,并将其值设置为
UTC

这样,Extbase会认为您在UTC区域内,不需要在php.ini中更改任何内容

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