我创建了一个使用日期时间查看某些特定事件(事件日期和事件时间)的小扩展,但如果我尝试从数据库到前端获取正确的日期时间,我总是遇到麻烦。
我可以通过TYPO3后端为每个事件设置日期时间:
但是,如果我尝试在前端获得此值,如:
[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();
如果我查看数据库,我可以看到存储了正确的日期时间:
所以我不知道为什么我的日期时间错误,有什么建议吗?
答案 0 :(得分:1)
TYPO3中的日期转换存在一些不一致,它在TCE和Extbase中表现不同。 Extbase认为所有日期都以UTC格式存储在数据库中,因此在数据映射过程中将您的日期从UTC转换为理论上的本地时间(恕我直言,不应该通过安装工具进行配置或者可以通过安装工具进行配置),肮脏但有效的伎俩是愚弄TYPO3 ,就在Install Tool
> All configurations
找到[SYS][phpTimeZone]
设置并将其值设置为UTC
。
这样Extbase会认为你在UTC区域内,你不需要在php.ini中更改任何内容。