Переход на летнее время и JavaScript - PullRequest
1 голос
/ 26 ноября 2010

У меня есть эта дилемма с JavaScript. Мне нужно преобразовать список дат из местного часового пояса клиента в часовой пояс Нью-Йорка (EST). Я использую функцию ниже:

Date.prototype.toNycTime = function() {

    var localTime = this.getTime();
    var localOffset = this.getTimezoneOffset() * 60000;
    var utc = localTime + localOffset;
    this.setTime(utc - 3600000 * 5);

    return this;
};

Работает нормально. Одна проблема заключается в том, что мне нужно корректировать смещение UTC каждый раз, когда в США есть переключатель перехода на летнее время. И это работает нормально для любой даты, предшествующей следующему переключению (самое раннее из них - 13 марта 2011 года). Но это не работает в даты после переключения. Я не знаю какой-либо встроенной функции JS в любом из браузеров, которая будет делать преобразование для меня.

Есть ли хорошая библиотека, которая позволит мне делать универсальные преобразования? Или кто-нибудь может предложить какие-либо советы по коду выше? Я стараюсь избегать программирования дат / времени для конвертации и все время искать.

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

Я имею дело именно с этой проблемой ... корпоративными пользователями по всему миру, но «корпоративное время» - это PST / PDT, которое включает в себя переход на летнее время.

Как я к нему подхожу: Я фактически анализирую строку часового пояса POSIX для PacificTime, начиная с

PST8PDT,M3.2.0/2,M11.1.0/2

и переформатировать их в разбираемые строки даты, когда часы идут вперед и назад. Используя смещение часов, встроенное в строку TZ, я конвертирую прямое и обратное время в метки времени эпохи и использую if-then, чтобы вычислить, является ли корпоративное время летним временем.

Это дает смещение от UTC, которое я могу использовать для преобразования локального времени «эпохи» (которое уже в UTC) в концептуальное местное время (которое фактически конвертируется во время UTC, но выглядит локальным).

Я должен сделать это, так как 'flot' делает все в UTC

0 голосов
/ 27 ноября 2010

http://www.datejs.com/

Datejs - это библиотека дат JavaScript с открытым исходным кодом.

Полная, но простая, скрытная и быстрая.Datejs прошел все испытания и готов нанести удар.Datejs не просто разбирает строки, он аккуратно разбивает их на две части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...