【问题标题】:DST conflict on CET DateTime phpCET DateTime php上的DST冲突
【发布时间】:2020-07-17 14:12:12
【问题描述】:

我在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() 

我希望结果必须相同,但这张照片是同一时间的结果:

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

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

  • php版本:7.2
  • 服务器时区:CET
  • 服务器操作系统:CENTOS

【问题讨论】:

  • 尝试使用“CEST”
  • @Mate 不起作用。你知道实际上我必须修复它,因为我从 db 获取这个 tz 并在 php 上运行该代码。

标签: php datetime timezone dst


【解决方案1】:

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

这在this page in the PHP documentation 顶部的警告中有所说明。

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 2017-05-28
    • 2012-10-07
    • 2011-07-25
    • 2015-10-13
    • 2018-03-14
    • 2018-11-20
    • 2012-08-29
    • 2015-01-19
    相关资源
    最近更新 更多