夏令时取消后,php DateTimeZone 中 America/Mexico_City 的偏移量错误

Wrong offset for America/Mexico_City in php DateTimeZone after Daylight Saving Time cancellation

提问人:Gioia 提问时间:4/5/2023 更新时间:5/25/2023 访问量:787

问:

我在时区之间转换日期时遇到 php 问题。 特别是使用 DateTime 和 DateTimeZone 函数,我得到 America/Mexico_City 的当前偏移量是 -5 小时 w.r.t UTC(-18000 秒)

$dateTimeZone = new DateTimeZone('America/Mexico_City');
$date = new DateTime('NOW');
$offset = $dateTimeZone->getOffset( $date ); // -> here $offset = -18000

我读到墨西哥去年取消了夏令时:https://www.timeanddate.com/news/time/mexico-abolishes-dst-2022.html

现在,如果您检查当前时间,他们会说当前偏移量为 -6 小时 w.r.t UTC:https://www.zeitverschiebung.net/en/city/3530597

有人遇到过这个问题吗? 我想我应该向PHP打开一个错误,但我想仔细检查我是否做错了什么,以及是否有其他人遇到这个问题。

谢谢

PHP 时区 UTC GMT

评论

0赞 Jon Skeet 4/5/2023
您知道您的 PHP 安装使用的是哪个版本的时区数据库吗?
0赞 Gioia 4/5/2023
刚刚检查了一下,似乎是2018.04,所以当然没有更新。感谢您的输入。我会与我们的系统部门核实以更新它并发布结果。

答:

3赞 Bartosz Boguszewski 4/5/2023 #1

您可能使用的是非常旧版本的 PHP,这就是为什么您的库“不知道”墨西哥已经放弃了 DST。

尝试将 PHP 版本升级到积极支持的版本,例如 8.1 或 8.2。

我在本地检查了它,在 PHP 8.1.13 中我得到偏移量 -21600,在 PHP 8.1.12 -18000 中。

1赞 Gioia 4/5/2023 #2

我们发现我们的PHP安装使用的时区库已经过时,我们在“日期”部分检查了php ini文件。
我们的系统部门更新了库,现在问题消失了。
非常感谢您的帮助 S.O. 社区:)