Я пытаюсь получить смещение часового пояса вот так
$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 (т.е. GMT + 13), что неверно, и должно было быть 43200. Google говорит, что fiji - это GMT +12 здесь. Я даже попытался установить часовой пояс по умолчанию для Европы / Лондона или UTC, но все же смещение fiji неверно. Флаг перехода на летнее время (индекс isdst в массиве $ transitions) активен для fiji, который, я думаю, должен быть ложным в случае fiji, поскольку их летнее время только что закончилось. В некоторых других часовых поясах активен dst, например America / Asuncion, America / Campo_Grande, America / Sao_Paulo, Australia / Adelaide и т. Д., Но все их смещения верны.
Есть ли причина, по которой смещение fiji по-прежнему показывает GMT + 13, а не GMT + 12? Я искал форумы целый день и ни одной подсказки.
P.S. Фиджи: когда местное летнее время приближалось к воскресенью, 18 января 2015 года, 03:00:00 часы были переведены на 1 час назад на воскресенье, 18 января 2015 года, 02:00:00 по местному стандартному времени.