Moment.js - Добавление минуты к последней минуте часа приводит к тому же часу - PullRequest
0 голосов
/ 27 октября 2019

В настоящее время я пытаюсь использовать moment.js (2.24.0), чтобы добавить минуту к последней минуте часа. Однако это приводит к возврату к первой минуте того же часа.

Вот пример кода:

  var minute = '2019-11-03 01:59:00';
  console.log('Before: '+minute);
  minute = moment(minute, 'YYYY-MM-DD HH:mm:ss')
    .add(1, 'minutes')
    .format('YYYY-MM-DD HH:mm:00');
  console.log('After: '+minute);

Это приводит к:

Before: 2019-11-03 01:59:00
After: 2019-11-03 01:00:00

Isэто ошибка или ожидаемое поведение для moment.js? Если это ожидаемое поведение, то как мне правильно обратиться к нему, чтобы перейти к следующему часу.

1 Ответ

2 голосов
/ 27 октября 2019

В США переход на летнее время заканчивается в 2:00 2019-11-03.

Поведение, которое вы видите при добавлении минуты к 1:59, не ошибка, а скорее то, что на самом делеслучиться в то время. Расчет основан на вашем текущем часовом поясе, поэтому 2019-11-03 01:59:00 ПО ВОСТОЧНОМУ ВРЕМЕНИ (восточное летнее время) + 1 минута = 2019-11-03 01:00:00 EST (Восточное стандартное время).

Если вы проведете один и тот же тест в 2:59 вместо 1:59, он будет увеличиваться, как и ожидалось. Вы можете указать, что на самом деле имеете в виду 1:59 AM EST, но перед попыткой убедитесь, что это действительно так.

Дополнительное чтение: https://momentjs.com/timezone/docs/#/using-timezones/parsing-ambiguous-inputs/

...