Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 键入3 6.2.15日期休息1小时_Datetime_Typo3_Extbase - Fatal编程技术网

Datetime 键入3 6.2.15日期休息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”(这是正确的)。我尝试更改

我有一个名为“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”(这是正确的)。我尝试更改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'));