Невозможно рассчитать разницу между двумя произвольными часовыми поясами .. Вы можете рассчитать разницу на определенный момент времени.
- Это настоящее разница 4 часа между Лондоном и Нью-Йорке (пишу это на 25 марта, 2015).
- Но это было 5-часовое различие несколько недель назад, и это будет через 5 недель.
- Каждый часовой пояс отключает переход на летнее время в другой момент времени.
Это верно в общем случае между двумя часовыми поясами. Однако некоторые часовых поясах либо переключаются точно в одно и то же время, либо вообще не переключаются.
- Существует всегда один час между Лондоном и Парижем, поскольку они переключаются в тот же момент времени.
- Есть всегда 3 часа между Аризоной и Гавайями, потому что у них нет летнего времени.
Имейте в виду, что в Соединенных Штатах каждый часовой пояс, который использует DST, фактически переключается в другой момент времени. Все они переключаются в 2:00 утра в местных времени, но не на том же универсальном момент времени.
- Так между Чикаго и Нью-Йорком, есть обычно 1 часы врозь
- Но в течение двух коротких периодов каждого года они либо 2 часа друг от друга, либо имеют же точное время.
См. Также «Часовой пояс! = Смещение» в the timezone tag wiki.
Теперь относительно момента-часового пояса, вы сказали в комментариях:
Веб-сервер находится в восточном часовом поясе; мы в Центральной. Мне нужна разница в часовом поясе пользователя и сервере.
Часовой пояс веб-сервера не имеет значения. Вы должны иметь возможность размещаться в любой точке мира, не затрагивая ваше приложение. Если вы не можете, значит, вы делаете это неправильно.
Вы можете получить разницу времени тока между вашего часового пояса (США по центральному времени) и пользователя. Вам даже не нужно знать точный часовой пояс пользователя для этого, если код работает в браузере:
var now = moment();
var localOffset = now.utcOffset();
now.tz("America/Chicago"); // your time zone, not necessarily the server's
var centralOffset = now.utcOffset();
var diffInMinutes = localOffset - centralOffset;
Если вместо того, чтобы код был запущен на сервере (в Node.js приложения), то вам потребуется, чтобы узнать часового пояса пользователя. Просто измените первую строку:
var now = moment.tz("America/New_York"); // their time zone
Что о вычитании [коррекций] (http://momentjs.com/timezone/docs/#/zone-object/offset/)? – CodingIntrigue
так что-то вроде '(moment(). Tz (" America/New_York "). Zone() - moment(). Zone())/60'? Наверное, это немного лучше. – Homer
Что именно вы планируете с этим делать? Вам действительно нужно использовать часовой пояс по имени? –