moment.js isBetween()意外返回false

时间:2019-06-29 10:08:48

标签: javascript momentjs

对于moment.js,我有一段非常简单的代码(请参见下文),它应该解析为true,但是解析为false。

使用isBefore()或isAfter()会得到相同的意外行为,这使我相信我定义日期的方式有问题。

var format = 'YYYY-MM-DDTHH:mm:ss.SSSSZ';
var testTime = moment('Thu Jun 27 2019 05:33:19 GMT+0000', format);
var startPeriod = moment('Thu Jun 27 2019 04:00:19 GMT+0000', format);
var endPeriod = moment('Thu Jun 27 2019 10:00:19 GMT+0000', format);

console.log(
    testTime.isBetween(startPeriod, endPeriod)
);

我在这里想念什么?

1 个答案:

答案 0 :(得分:2)

moment()的第二个参数采用当前第一个参数的格式。这看起来不正确。您可以通过分别记录时间并查看时间是不正确的(可能是1970年)来验证这一点

请参见https://momentjs.com/docs/#/parsing/creation-data/

实际上,您应该可以完全删除第二个参数,因为输入日期已经是标准格式(ISO字符串)。

var testTime = moment('Thu Jun 27 2019 05:33:19 GMT+0000');
var startPeriod = moment('Thu Jun 27 2019 04:00:19 GMT+0000');
var endPeriod = moment('Thu Jun 27 2019 10:00:19 GMT+0000');

console.log(
    testTime.isBetween(startPeriod, endPeriod)
);