太平洋/斐济的Php夏时制问题

太平洋/斐济的Php夏时制问题,php,datetime,timezone,dst,timezone-offset,Php,Datetime,Timezone,Dst,Timezone Offset,我正试着像这样得到时区偏移 $zone = new DateTimeZone('Europe/Oslo'); $c = new DateTime(null, $zone); $offset = $c->getOffset(); $transitions = $zone->getTransitions(time(), time()); echo '<pre>',print_r($transitions),'</pre>'; $zone=新日期时区(“欧洲/奥斯

我正试着像这样得到时区偏移

$zone = new DateTimeZone('Europe/Oslo');
$c = new DateTime(null, $zone);
$offset = $c->getOffset();
$transitions = $zone->getTransitions(time(), time());
echo '<pre>',print_r($transitions),'</pre>';
$zone=新日期时区(“欧洲/奥斯陆”);
$c=新日期时间(空,$zone);
$offset=$c->getOffset();
$transitions=$zone->getTransitions(time(),time());
回显“”,打印($transitions),“”;
它以秒为单位返回偏移量,这很好。但是,对于时区“太平洋/斐济”,该偏移不正确。对于斐济,它返回46800(即GMT+13),这是不正确的,应该是43200。谷歌说斐济是格林尼治标准时间+12。我甚至尝试将默认时区设置为欧洲/伦敦或UTC,但斐济的偏移量仍然不正确。斐济的夏时制标志(isdst索引在$transitions数组中)是活动的,我认为在斐济的夏时制刚刚结束的情况下应该是错误的。很少有其他时区像美国/亚松森、美国/坎波格兰德、美国/圣保罗、澳大利亚/阿德莱德等时区有dst活动,但它们的所有偏移都是正确的

为什么斐济的偏移量仍然显示GMT+13而不是GMT+12?我一整天都在搜索论坛,一点线索也没有


斐济:2015年1月18日星期日当地夏时制即将到来时,03:00:00时钟被调回1小时至2015年1月18日星期日02:00:00当地标准时间。

斐济的DST转换结束(其“后退”转换)最近在基础数据中发生了变化。这项活动原定于1月24日结束,但提前一周,即1月17日,以配合斐济政府的公告

这一变更是在IANA tz数据库的2015g版本()中实施的。对于PHP,您可以在的2015.7版中找到。这是2015年10月3日发布的,PHP总是在每次发布之前获取最新的时区B。因此,如果您更新到PHP版本5.6.14或更高版本(或开发预览轨道上的7.0.0 RC5),那么您将自动进行更改。否则,你可以

一般来说,如果您的应用程序依赖于本地时间的准确性(特别是调度场景),那么您应该订阅公告邮件列表,以便了解可能影响系统的更改,然后注意库、框架和,和操作系统,以确保及时应用它们。否则,您将面临与您描述的不一致的风险