CET DateTime php上的DST冲突

我在php上遇到问题(可能是错误)。

这是我的代码:

$date = new \DateTime();
$date->setTimezone(new \DateTimeZone('UTC'));
echo 'UTC : '.$date->format('Y-m-d H:i:s').'<br>';
$date->setTimezone(new \DateTimeZone('CET'));
echo 'CET : '.$date->format('Y-m-d H:i:s').'<br>';

这是我在mysql上查询时区的时间。

SELECT @@system_time_zone as tz,now() 

我希望结果必须是相同的,但是这张图片是同时出现的:

CET DateTime php上的DST冲突

我发现问题出在CET时区的DST(Daylight Saving time)上。

任何人都知道如何解决它?

  • php版本:7.2
  • 服务器时区:CET
  • 服务器操作系统:CENTOS
kittyxnwei 回答:CET DateTime php上的DST冲突

请勿将时区缩写传递给DateTimeZone。请改用完全合格的基于位置的IANA time zone identifier。例如,Europe/Berlin。它将根据相关日期/时间正确区分CET和CEST。

this page in the PHP documentation顶部的警告中对此进行了说明。

本文链接:https://www.f2er.com/2507520.html

大家都在问