使用PHP根据时区获取正确的时间

问题描述 投票:0回答:2

我正在尝试根据世界各地的“ TimezoneId”使用准确的当前本地时间。有时我会得到正确的GMT偏移量。例如:

$localTimezone = new DateTimeZone('America/Los_Angeles');
$gmtTimezone = new DateTimeZone('GMT');
$currentDateTime = new DateTime('2020-01-21 13:14', $gmtTimezone);
$offset = $localTimezone ->getOffset($currentDateTime );
echo $offset/3600;

这将返回-8,这对于今天在洛杉矶的日期是正确的。

但是,当我使用America/Sao_Paulo作为“ TimezoneId”尝试相同操作时,会得到-2,该位置当前不适用于此位置。根据Google和我尝试过的其他时间应用,应该为-3

我正在寻找解决方案,并看到了不同的尝试,这些尝试似乎对我没有用。

谢谢您的输入!

php time timezone timezone-offset
2个回答
1
投票

根据timeanddate.com巴西于2019年2月17日停止遵守DST。要在您的应用程序中反映这一点,您需要一个PHP版本,其中包括在发布公告后更新的IANA时区数据库的版本。我已经在3v4l.org中运行了您的代码,得到了7.3.9-7.4.1。

© www.soinside.com 2019 - 2024. All rights reserved.