Вопрос по momentjs, timezone-offset, javascript, node.js, timezone – Получите разницу часовых поясов в часах с моментом

10

Я хотел бы получить разницу часовых поясов между Нью-Йорком и Гонконгом с помощью модуля моментов Node.js. Я сделал некоторую предварительную работу.

var NewYork_time_hr = moment().tz("America/New_York").format('HH'); 
var HongKong_time_hr = moment().tz("Asia/Hong_Kong").format('HH');

Затем я могу написать функцию для вычисления разницы между двумя часовыми поясами в часах. Я надеялся на более простой метод.

Есть ли более элегантный и простой способ сделать это с помощью библиотеки моментов?

Ваш Ответ

1   ответ
16

Не уверен насчет «проще», но более правильно (поскольку не все часовые пояса находятся на расстоянии часа друг от друга):

// get the current time so we know which offset to take (DST is such bullkitten)
var now = moment.utc();
// get the zone offsets for this time, in minutes
var NewYork_tz_offset = moment.tz.zone("America/New_York").offset(now); 
var HongKong_tz_offset = moment.tz.zone("Asia/Hong_Kong").offset(now);
// calculate the difference in hours
console.log((NewYork_tz_offset - HongKong_tz_offset) / 60);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.4.1/moment-timezone-with-data-2010-2020.min.js"></script>

К вашему сведению, другой способ получить смещениеmoment(now).tz("America/New_York").utcOffset(), но в любом случае это хорошо. Вы все равно должны вычесть их вручную. Matt Johnson-Pint
Проголосовал и выбран в качестве ответа. Я не совсем понимаю, почему необходимостьvar now = moment.utc();? Почему бы просто не получитьNewYork_time_hr смещениеHongKong_time_hr? user781486
Отличный ответ. Хотя это также сработает, если вы просто сдадитеmoment() вместоmoment.utc(), Он по-прежнему оценивается как одна и та же временная метка на основе UTC, независимо от того, какую форму вы передаете. +1 о результате будет отличаться в зависимости от того, когда вы его называете "Сколько часов между Нью-Йорком и Лос-Анджелесом?" (Обычно 3, но иногда 2, а иногда 4.) Matt Johnson-Pint
Комментарий выше это был намек - смещения часовых поясов меняются в течение года, ине все одновременно, Разница между Гонконгом (без DST) и Нью-Йорком (с DST) различается в зависимости от того, спрашиваете ли вы летом или зимой. И вы не можете просто использоватьhr потому что, например Калькутта смещена на +05: 30. Amadan

Похожие вопросы