Moment.js isBefore函数未按预期工作

Mar*_*ssa 4 javascript momentjs

我的控制台日志给了我一个意想不到的输出.

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

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

moment('2010-10-20').isBefore('2011-01-01', 'year')
Run Code Online (Sandbox Code Playgroud)

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

Lyu*_*mir 8

@Oliver Charlesworth是对的,moment()不接受'day'作为第二个论点.看看这里,向下滚动查看所有有效签名.


话虽如此,你可以转换

isBefore(moment("2017-04-09 01:00:00", 'day'));
Run Code Online (Sandbox Code Playgroud)

isBefore(moment('2017-04-09 01:00:00'), 'day');
Run Code Online (Sandbox Code Playgroud)

或者

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

两者都有效.


是isBefore的签名.


Sam*_*ena 5

moment(...)说法并没有接受“日”参数。

相反,您应该isBefore(...)像这样使用 day 参数调用:

moment(...).isBefore(moment(...), 'day'));
Run Code Online (Sandbox Code Playgroud)

更多信息可以在这里找到此刻的文档。