Moment.js isBefore函数无法按预期工作

时间:2017-04-09 23:05:20

标签: javascript momentjs

我的控制台日志给了我意想不到的输出。

var bool = (moment("2017-04-08 23:00:00").isBefore(moment("2017-04-09 01:00:00", 'day')));
console.log(bool);

由于某种原因,输出是错误的。 根据文档,以下代码应返回true。

moment('2010-10-20').isBefore('2011-01-01', 'year')

即使它不是一整年过去,如果它是一个不同的年份,我的理解是它应该返回错误。 就我而言,虽然它还没有24小时,但却是另一天。 有什么我不能正确理解吗?

3 个答案:

答案 0 :(得分:7)

@Oliver Charlesworth是对的,moment()不接受'day'作为第二个参数。看看here并向下滚动查看所有有效签名。

话虽如此,你可以转换

isBefore(moment("2017-04-09 01:00:00", 'day'));

isBefore(moment('2017-04-09 01:00:00'), 'day');

isBefore('2017-04-09 01:00:00', 'day');

两者都有效。

Here是isBefore的签名。

答案 1 :(得分:3)

The moment(...) argument does not accept the 'day' parameter.

Instead, you should be calling isBefore(...) with the day parameter like so:

moment(...).isBefore(moment(...), 'day'));

More info can be found at the moment docs here.

答案 2 :(得分:0)

同样发现chrome和safari浏览器之间的问题,然后我发现,safari浏览器没有正确验证时区和微秒值的日期然后我比较日期如下

.toISOString()

而不是使用带有微秒和时区的日期

"2021-05-11 22:00:23"

那么它对我来说很好