如何避免TYPO3中的日期时间问题?

时间:2016-04-09 18:39:42

标签: datetime typo3

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

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

enter image description here

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

[SYS][phpTimeZone] = Europe/Berlin

然后输出" 10.04.2016 - 08:00:00"它是" 10.04.2016 - 10:00:00和#34;。

我该如何避免这种行为?我也通过安装工具设置了时区:

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

但我总是错误的约会时间。如果我尝试这样的事情:

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

然后我得到了正确的输出:

PrintDocument pd = new PrintDocument();
            pd.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Alashi", 15, 4);//("PaperA4", 840, 1180);
            pd.Print();

如果我查看数据库,我可以看到存储了正确的日期时间:

enter image description here

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

1 个答案:

答案 0 :(得分:1)

TYPO3中的日期转换存在一些不一致,它在TCE和Extbase中表现不同。 Extbase认为所有日期都以UTC格式存储在数据库中,因此在数据映射过程中将您的日期从UTC转换为理论上的本地时间(恕我直言,不应该通过安装工具进行配置或者可以通过安装工具进行配置),肮脏但有效的伎俩是愚弄TYPO3 ,就在Install Tool> All configurations找到[SYS][phpTimeZone]设置并将其值设置为UTC

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