Я работаю над веб-приложением с мировыми часами и хотел бы добавить функцию, чтобы отметить, как и когда каждое местоположение будет изменено на летнее время.
Я использую DateTime
и DateTime::Timezone
модули CPAN, которые, кажется, предоставляют все мыслимые функции, кроме этой! DateTime::Timezone
— это реализация базы данных tz/Olson.
До сих пор я сравниваю локальное смещение с UTC, как сейчас, так и на 24 часа вперед, что позволяет мне отметить эффект, но не точно, когда он возникает.
Мое доказательство концепции вычисляет это каждую минуту. Я думаю, что следующий шаг:
создайте таблицу поиска, используя аналогичный метод, для следующих 365 дней, чтобы определить затронутые дни, а затем просмотрите каждый час в течение этих дней.
каким-то образом разобрать правила перехода на летнее время в модуле
DateTime::Timezone
.
Любые идеи? Я должен отметить, что мои знания Perl довольно базовые.
Редактировать:
Похоже, что другим вариантом может быть перенос на PHP и использование DateTimeZone::getTransitions
. Это вернуло массив всех переходов, но PHP 5.3.0 просто добавил необязательные параметры timestamp_begin
и timestamp_end
для ограничения диапазона.
zdump -v America/New_York
- person Grant McLean   schedule 10.08.2010