2016-12-06 1 views
0

Я хотел бы знать, как использовать Moment.JS, чтобы рассчитать количество часов в данный день. Причина в том, что обычный день будет 24 часа. Но день, когда летнее время начинается весной, составит 25 часов.Как использовать Momentjs для расчета количества часов в день экономии света День

ИЛИ как я могу использовать moment.js или даже js для расчета того, была ли достигнута летняя сберегательная дата весны, учитывая, что DST начинается после 2a.m.

код Я пытаюсь использовать это

момент ([2017, 2, 12]) isDST().

Однако, как может я использовал его так, чтобы оно не только скажите мне, если его DST, но может также проверить, если его после 2 утра

+0

http://stackoverflow.com/questions/11887934/how-to-check-if-the-dst-daylight-saving-time-is-in-effect-and-if-it-is-whats – manonthemat

+1

и http://stackoverflow.com/questions/21918095/moment-js-how-to-detect-daylight-savings-time-and-add-one-day – manonthemat

+0

Пожалуйста, прочитайте [ask]. Ключевые фразы: «Поиск и исследование» и «Объясните ... любые трудности, которые мешали вам самим решить». –

ответ

2

Просто получить разницу в часах между началом рабочего дня и начало следующего дня.

var m = moment([2017, 2, 12]); // your moment object, however you create it. 

var a = moment(m).startOf('day'); 
var b = moment(m).add(1, 'day').startOf('day'); 

var h = b.diff(a, 'hours'); // 23, 24, 25, etc. 

Обратите внимание, что часовые пояса различны во всем мире. Некоторые делают DST, некоторые - нет. Некоторые делают это в разные даты и в разное время. В результате даже можно получить 23,5 или 24,5, так как есть хотя бы одно место с 30-минутным уклоном DST вместо обычного 1 часа (Lord Howe Island, Австралия). А также есть места, которые имеют переходы, не относящиеся к DST, например, когда Венесуэла переехала их стандартное время от UTC-04: 30 обратно в UTC-04: 00 в мае 2016 года

Кроме того, вы сказали:

... Но день, когда летнее время начинается весной, будет 25 часов.

Это на самом деле Падение, у которого есть дополнительный час. Весной это будет час короткий (23 часа).

+0

Код выше возвращается 23. Он должен возвращать 24, поскольку весна составляет 25 часов –

+0

Нет, весной 23 часа. Для США час с 2:00 до 2:59 * пропускается *, когда часы «переходят вперёд», удаляя час со дня. Это 25 часов в * падении *, когда вы «отступаете» с 1:59 до 1:00, чтобы повторить 1:00 час два раза, добавив дополнительный час в день. –

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