我正在尝试根据世界各地的“ 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
。
我正在寻找解决方案,并看到了不同的尝试,这些尝试似乎对我没有用。
谢谢您的输入!
根据timeanddate.com巴西于2019年2月17日停止遵守DST。要在您的应用程序中反映这一点,您需要一个PHP版本,其中包括在发布公告后更新的IANA时区数据库的版本。我已经在3v4l.org中运行了您的代码,得到了7.3.9-7.4.1。