Подтвердить что ты не робот

Библиотека JavaScript, которая обрабатывает изменение часового пояса

Существует ли библиотека javascript, которая может обрабатывать преобразования часовых поясов (и учитывает правила DST и такие вещи)? Я знаю, что есть похожие вопросы, но ни один из тех, которые я видел, похоже, не имеет ответа, который действительно соответствует моему вопросу.

Я хотел бы создать дату в часовом поясе A и иметь возможность манипулировать ею (добавлять дни, часы и тому подобное), а затем преобразовывать их в другой часовой пояс B. Должно быть много людей, которым это нужно я думаю, там должна быть какая-то библиотека, которую я не нашел.

4b9b3361

Ответ 1

Я думаю, вы этого хотите:

https://github.com/mde/timezone-js

Парсер действительно нуждается в небольшой настройке, чтобы работать без другой библиотеки, которую человек собрал (по крайней мере, последний раз я использовал ее пять месяцев назад?), но в остальном это кажется сплошной библиотекой. Я использовал его на двух очень часовых поясах, с высоким трафиком, с коммерческими сайтами с большим успехом.

Он не очень хорошо работает с jquery date picker и momentjs (и, возможно, с другими библиотеками) иногда, поэтому будьте готовы либо настроить эти библиотеки на использование datezoneJS ', либо иметь функцию преобразования/вывода, чтобы вы могли переведите дату часовой пояс в "нормальную" дату и наоборот для ввода/вывода.

В противном случае, в качестве примера, это займет время в азиатско-сингапурском времени и превратит его в дату America/Los_Angeles, соблюдая при этом летнее время. Он использует файлы часовых поясов Olson, которые свободно доступны, и анализирует их на что-то действительно реально точное.

Надеюсь, это приведет вас к правильному пути.

- Edit -

Забыл - пару советов по его использованию. Если у вас ограниченный набор часовых поясов, я бы настоятельно рекомендовал выщипывать их, указав синтаксическому анализатору только их использование - тогда вам не нужно загружать большой файл из них. Кроме того, меня однажды ударили, потому что setHours, setMinutes и т.д. Не следуют JS "spec" setHours (0, 0, 0, 0) (это часы, минуты, секунды, миллис). Здесь предлагается запрос на улучшение: https://github.com/mde/timezone-js/issues/48 Я не думаю, что для модификации кода это будет совсем сложно, поэтому я надеюсь, что мы видеть, как оно слилось раньше, чем позже.. или я могу просто сделать это сам;)

Ответ 2

MOMENT - Библиотека дат javascript на 5 килобайт для синтаксического анализа, проверки, управления и форматирования дат.

момент() зона(). это функция, которую вы хотите.

Вы также можете попробовать datejs, однако я предпочитаю библиотеку момента, у них хорошие документы и поддерживается вкусный код.

Ответ 4

Вы можете посмотреть этот пост: Как получить часовую зону пользователя с помощью jquery?

Кажется, что вам не нужна библиотека для преобразования часовых поясов.

- EDIT (для людей, которые слишком заняты, чтобы читать другие ответы на вопросы в Stackoverflow)

Вы можете использовать стандартный объект Date следующим образом:

var offset = (new Date).getTimezoneOffset()/60

И для тех, кто слишком занят чтением спецификаций...

Это даст вам час в соответствии с универсальным временем: var hour = (new Date).getUTCHours() И это даст вам час в соответствии с местным временем: var hour = (new Date).getHours()

Понятно?