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

我试图得到像这样的时区偏移量

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

它以秒为单位返回偏移量,这很好。 但是这个抵消在时区“太平洋/斐济”上无法正常工作。 对于斐济,它返回46800(即格林威治标准时间+13),这是不正确的,它应该是43200.谷歌说,斐济是GMT + 12在这里。 我甚至尝试设置默认时区到欧洲/伦敦或UTC,但仍然斐济的抵消是不正确的。 夏季节省标志($ transitions数组中的isdst索引)对于斐济活跃,我认为在夏季刚刚结束的斐济情况下应该是错误的。 很少有其他时区具有活跃,如美国/亚松森,美国/ Campo_Grande,美国/ Sao_Paulo,澳大利亚/阿德莱德等,但它们的所有偏移都是正确的。

斐济的抵消仍然显示GMT + 13而不是GMT + 12的任何原因? 我整天都在搜索论坛,而不是一个线索。

PS斐济:当地日光时间即将到达2015年1月18日星期日,03:00:00时钟转换为2015年1月18日的1小时至2015年1月18日的星期日,当地标准时间02:00:00。


基础数据最近改变了斐济的DST结束转换(它们的“后退”转换)。 它以前定于1月24日结束,但是提前一周移到1月17日,以配合斐济政府的公告。

此更改在IANA tz数据库2015g版中制定(此处的发行说明)。 对于PHP,您可以在timezonedb pecl包的2015.7版中找到它。 这是在2015年10月3日发布的,PHP在每次PHP发布前都会抓取最新的timezonedb。 因此,如果您更新到PHP 5.6.14或更高版本(或dev预览版上的7.0.0 RC5),那么您将自动进行更改。 否则,您可以手动更新timezonedb。

一般来说,如果您的应用程序依赖于本地时间的准确性(尤其是时间安排情景),那么您应该订阅IANA上的Announcements邮件列表,以了解可能影响您系统的更改,然后观察进入图书馆的底层更改,框架和操作系统,以确保及时应用它们。 否则,您可能会面临与您所描述的不一致的风险。

链接地址: http://www.djcxy.com/p/29415.html

上一篇: Php Daylight saving issue with Pacific/Fiji

下一篇: Daylight Saving Time start and end dates in Ruby/Rails