Php Pacific/Fiji 的夏令时问题

Php Daylight saving issue with Pacific/Fiji

我正在尝试像这样获取时区偏移

$zone = new DateTimeZone('Europe/Oslo');
$c = new DateTime(null, $zone);
$offset = $c->getOffset();
$transitions = $zone->getTransitions(time(), time());
echo '<pre>',print_r($transitions),'</pre>';

其中 returns 以秒为单位的偏移量很好。但是此偏移量对于时区 'Pacific/Fiji' 无法正常工作。对于斐济,returns 46800(即 GMT + 13)不正确,应该是 43200。Google 说斐济是 GMT +12 here。我什至尝试将默认时区设置为 Europe/London 或 UTC,但斐济的偏移量仍然不正确。斐济的夏令时标志($transitions 数组中的 isdst 索引)处于活动状态,我认为在斐济的情况下应该是假的,因为他们的夏令时刚刚结束。很少有其他时区像 America/Asuncion、America/Campo_Grande、America/Sao_Paulo、Australia/Adelaide 等一样具有 dst 活动,但它们的所有偏移量都是正确的。

斐济的偏移量仍然显示 GMT+13 而不是 GMT+12 的原因是什么?找了一整天的论坛,一点线索都没有。

P.S。斐济:当当地夏令时即将到达 2015 年 1 月 18 日星期日时,03:00:00 时钟向后拨 1 小时至 2015 年 1 月 18 日星期日,改为 02:00:00 当地标准时间。

斐济的 end-of-DST 过渡(他们的 "fall-back" 过渡)最近在基础数据中发生了变化。它原定于 1 月 24 日结束,但提前一周,即 1 月 17 日,以配合斐济政府的公告。

此更改已在 IANA tz 数据库的 2015g 版中生效(release notes here). For PHP, you'll find this in version 2015.7 of the timezonedb pecl package. This was released on 2015-10-03, and PHP always grabs the latest timezonedb before each PHP release. So if you update to PHP version 5.6.14 or greater (or 7.0.0 RC5 on the dev preview track), then you'll automatically have the changes. Otherwise, you can update timezonedb manually

一般来说,如果您的应用程序依赖于当地时间的准确性(尤其是 调度 场景),那么您应该订阅公告邮件列表 at IANA 以便您了解可能会影响您的系统的更改,然后观察进入库、框架和操作系统的下层更改,以确保及时应用它们。否则,您可能会遇到与您描述的不一致的情况。