Datetime 键入3 6.2.15日期休息1小时
我有一个名为“fromDate”的DateTime列的模型: 现在我需要这个日期来做一些计算,但当我试着输出它时,它似乎正好关闭了1个小时Datetime 键入3 6.2.15日期休息1小时,datetime,typo3,extbase,Datetime,Typo3,Extbase,我有一个名为“fromDate”的DateTime列的模型: 现在我需要这个日期来做一些计算,但当我试着输出它时,它似乎正好关闭了1个小时 echo $model->getFromDate()->format('Y-m-d H:i:s'); 这将返回2016-02-11 01:00:00,而不是2016-02-11 00:00:00 我检查了我的服务器时区,date\u default\u timezone\u get()返回“Europe/Berlin”(这是正确的)。我尝试更改
echo $model->getFromDate()->format('Y-m-d H:i:s');
这将返回2016-02-11 01:00:00,而不是2016-02-11 00:00:00
我检查了我的服务器时区,date\u default\u timezone\u get()返回“Europe/Berlin”(这是正确的)。我尝试更改typo3服务器时区(我尝试了0和1,但没有更改任何内容)
如果我用phpmyadmin查看数据库,条目是“2016-02-11 00:00:00”
我错过了什么,为什么会这样?有什么提示吗?因为我觉得我快疯了,一个巨大的计算脚本是基于$fromDate的正确性。。。任何帮助都将不胜感激。谢谢大家! 试试类似的方法
$myDate = $model->getFromDate();
$myDate->setTimezone(new \DateTimeZone('UTC'));
或者在原始数据库表值中使用的任何时区(如果不是UTC)
至少在TYPO3 6.2中,在存储库上执行findAll()
会开始一系列调用——调用\TYPO3\CMS\Extbase\Persistence\repository->createQuery()
,然后调用\TYPO3\CMS\Extbase\Persistence\Generic\QueryResult->rewind()
<代码>倒带()调用初始化()
,它调用\TYPO3\CMS\Extbase\Persistence\Generic\Mapper->map()
map()
调用mapSingleRow()
,然后调用同一类中的thawProperties()
TYPO3\CMS\Extbase\Persistence\Generic\Mapper->thawProperties()
有一个基于每个属性数据类型的“开关大小写”代码部分。如果类型为DateTime,thawProperties()
在同一类中调用mapDateTime()
mapDateTime()
假设“本机日期/日期时间值存储在UTC中”,因此它将“UTC”日期时区应用于原始值。但是,mapDateTime()
从PHP函数中应用DateTimeZone,并将更改后的日期和时区属性值返回到sawProperties()
,最终返回到Extbase扩展
您可以在TYPO3 6.2 API和中找到详细信息
我的答案与和有关。这是Extbase的日期时间处理中的一个问题,它最近针对TYPO3 7.6和8进行了修复(日期未被解释为UTC)。我们不会正式将6.2版本的补丁向后移植,但您当然可以自己应用它
如果您不想修补核心,还可以为相关部分创建扩展类(
DataMapper
)并重写该方法(mapDateTime()
)。您使用的是哪一版本的TYPO3?如果在显示时区的情况下呈现日期时间(如“Y-m-d H:i:sT”),您会看到什么?在安装工具>所有配置>切换所有查找[SYS][serverTimeZone]
并将其设置为1
(如果不是),TYPO3中有一些功能试图将日期时间始终以UTC存储到DB中,然后还原该对话。。。这有点奇怪…我确实把它设为1-没什么变化有一个很好的读数:s
$myDate = $model->getFromDate();
$myDate->setTimezone(new \DateTimeZone('UTC'));