CET DateTime 的 DST 冲突 php

DST conflict on CET DateTime php

我在 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 时区的 DST(Daylight Saving time)

有人知道我该如何解决它吗?

不要将时区缩写传递给 DateTimeZone。请改用完全限定的、基于位置的 IANA time zone identifier。例如,Europe/Berlin。它将根据所讨论的 date/time 正确区分 CET 和 CEST。

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