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)
。
有人知道我该如何解决它吗?
- php版本:7.2
- 服务器时区:CET
- 服务器 OS : CENTOS
不要将时区缩写传递给 DateTimeZone
。请改用完全限定的、基于位置的 IANA time zone identifier。例如,Europe/Berlin
。它将根据所讨论的 date/time 正确区分 CET 和 CEST。
this page in the PHP documentation 顶部的警告中对此进行了说明。
我在 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)
。
有人知道我该如何解决它吗?
- php版本:7.2
- 服务器时区:CET
- 服务器 OS : CENTOS
不要将时区缩写传递给 DateTimeZone
。请改用完全限定的、基于位置的 IANA time zone identifier。例如,Europe/Berlin
。它将根据所讨论的 date/time 正确区分 CET 和 CEST。
this page in the PHP documentation 顶部的警告中对此进行了说明。