javascript конвертер часовых поясов - PullRequest
0 голосов
/ 02 марта 2012

Мне нужен способ для преобразования времени в будущем в разные часовые пояса, не полагаясь на компьютерное время пользователя.

Во время регистрации пользователь указывает свой часовой пояс. Когда он входит в систему, я вычисляю смещение в минутах между временем UTC и его временем и вставляю это смещение на страницу, чтобы функция javascript могла выполнять преобразования. Примерно так:

var TheUTCTime = new Date(UserTime.getTime() - TimeZoneOffsetInMinutes * 60000);

и вот так наоборот:

var TheUserTime = new Date(UTCTime.getTime() + TimeZoneOffsetInMinutes * 60000);

Это очень хорошо работает для преобразования времени, если смещение не меняется. Например, из-за перехода на летнее время между US EST и UTC разница в 300 или 360 минут зависит от месяца в году.

Мои функции хорошо работают для преобразования сегодняшней даты, но мне бы хотелось, чтобы что-то могло 1) делать то же самое для любого дня года и 2) не зависит от внутренних часов или часового пояса пользователя.

Как я мог это сделать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 03 марта 2012

Мои функции хорошо работают для преобразования сегодняшней даты, но мне бы хотелось, чтобы что-то могло 1) делать то же самое для любого дня года и 2) не зависит от внутренних часов или часового пояса пользователя.

Если вы хотите преобразовать другое время UTC в местное время пользователя, у вас есть , чтобы узнать их часовой пояс. Это в значительной степени определение часового пояса: отображение между UTC и местным временем (или, что то же самое, между UTC и смещением от местного времени).

Как вы видели, получить текущее смещение *1011* недостаточно из-за переходов на летнее время (и любых других изменений часовых поясов - они различаются больше, чем вы могли ожидать).

В принципе, нет никакого способа обойти это: у вас будет иметь , чтобы спросить пользователя о его часовом поясе. Вы можете сделать догадку на основе текущего смещения от UTC и, возможно, геокодировать их IP-адрес, но вам придется подтвердить это с ними. (Например, они могут находиться в поездке или в другом месте, а не в своем «домашнем» часовом поясе.)

0 голосов
/ 03 марта 2012

Чтобы не зависеть от часового пояса пользователя, я думаю, что лучший подход - это делать преобразования в server side.

Здесь, в SO, есть хороший вопрос, касающийся перехода на летнее время и JavaScript-объекта Date: Рекомендации по переходу на летнее время и часовой пояс

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