我当前正在尝试使用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
这是moment.js的错误或预期行为吗?如果这是预期的行为,那么如何正确解决该问题,直到下一个小时。
答案 0 :(得分:2)
在美国,夏令时将于2019-11-03凌晨2点结束。
您在1:59 AM上添加一分钟时看到的行为不是错误,而是当时的实际情况。该计算是基于您当前的时区,因此2019-11-03 01:59:00 EDT(东部夏令时)+1分钟= 2019-11-03 01:00:00 EST(东部标准时间)。
如果要在2:59而不是1:59进行相同的测试,它将按预期增加。您可以指定自己实际上是美国东部标准时间上午1:59,但请确保在尝试之前确实如此。
其他阅读:https://momentjs.com/timezone/docs/#/using-timezones/parsing-ambiguous-inputs/