Список часовых поясов (DateTimeZone::listAbbreviations)

Фруталити

Новичок
Здравствуйте.

Пытаюсь составить список всех часовых поясов с помощью DateTimeZone::listAbbreviations. В общем, набросал простой скрипт, который в цикле перебирает все доступные значения и записывает их в БД. Меня интересовали значения timezone_id, offset, а также код страны, соответствующий какому-то поясу.

Код страны определяется с помощью DateTimeZone::getLocation.

Первое, что насторожило: получилось 1936 часовых поясов.

Стал смотреть подробнее. Оказалось, что одному timezone_id соответствуют разные offset. Например, для Africa/Accra создано 3 записи с разными offset (1200, -52, 0). Для Africa/Algiers целых 5 записей (причем, есть и записи с одинаковым offset). И так далее.

Как это вообще объяснить? Мне нужна четкая таблица соответствия timezone — offset — country_code.

Ubuntu 10.04, tzdata 2013d-1ubuntu1.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Как это вообще объяснить? Мне нужна четкая таблица соответствия timezone — offset — country_code.
Это объясняется тем, что в разные периоды времени смещение было разным, и для правильного расчета времени в прошлом нужно хранить историю изменений часового пояса.
 

Фруталити

Новичок
Спасибо, вы подтвердили одну из моих догадок. Как-нибудь можно определить, какое смещение является актуальным?
 
Сверху