2013-12-20 2 views
5

Мне нужна функция Javascript, которая задает часовой пояс, возвращает текущее смещение utc.Получить utc смещение от часовой пояс в Javascript

Например, theFuncIneed ('US/Eastern') -> 240

Любая идея?

Благодаря

+0

Создать объект с именами часовых поясов, как свойства и смещение как значение. Обратите внимание, что для названий часовых поясов нет стандарта, они время от времени меняются и появляются дубликаты (например, EST). – RobG

+0

Проверьте момент.js, он имеет метод 'zone()'. – Barmar

+0

@RobG - 'US/Eastern' является действительным [IANA часовой пояс] (http://iana.org/time-zones) идентификатор. Вы можете найти его в нижней части списка [здесь] (http://en.wikipedia.org/wiki/List_of_tz_database_time_zones). –

ответ

4

В общем, это не представляется возможным.

  • US/Eastern является идентификатором для временной зоны в. (Это на самом деле псевдоним America/New_York, который является реальным идентификатором.)

  • 240 является временной зоной смещения. Это чаще всего написано как -04:00 (инвертируйте знак, разделите его на 60).

  • Восточный часовой пояс США включает в себя как восточное стандартное время, имеющее смещение -05:00, так и восточное дневное время, которое имеет смещение -04:00.

Так что это не совсем точно сказать US/Eastern = 240. Пожалуйста, ознакомьтесь с timezone tag wiki, особенно раздел под названием «Time Zone! = Offset».

Теперь вы запросили текущий смещение, которое является возможно. Если вы укажете дату + время, вы можете решить эту проблему.

  • Для локального часового пояса компьютера, на котором Javascript код выполняется, это построено с использованием .getTimeZoneOffset() из любого экземпляра Date объекта.

  • Но если вы хотите, чтобы это было , то необходимо указать часовой пояс, тогда вам нужно будет использовать one of the libraries I listed here.

+0

ECMA-262 определяет [смещение по часовой стрелке] (http://ecma-international.org/ecma-262/5.1/#sec-15.9.5.26) как «UTC - localTime», выраженное в минутах. Поэтому я думаю, что на форуме javascript разумно писать '+ 240', где в противном случае можно использовать' -04: 00'. – RobG

+0

Да, в качестве номера, 240 приемлемо. –

+1

'.getTimeZoneOffset()' должен быть '.getTimezoneOffset()' без верхнего регистра Z –

1

Вы можете сделать это с помощью moment.js

moment.tz ('имени часового пояса'). UtcOffset()

Смежные вопросы