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

新手上路,请多包涵

我的控制台日志给了我意外的输出。

 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')

即使不是整整一年,如果是不同的一年,我的理解是它应该返回 false。就我而言,虽然还不到 24 小时,但已经是不同的一天了。有什么我没有正确理解的吗?

原文由 Marissa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 910
2 个回答

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


话虽如此,您可以转换

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') ;

两者都有效。


是 isBefore 的签名。

原文由 Lyubomir 发布,翻译遵循 CC BY-SA 3.0 许可协议

moment(...) 参数 接受“day”参数。

相反,您应该使用 day 参数调用 isBefore(...) 如下所示:

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

目前可以 在此处 找到更多信息。

原文由 Sam Gomena 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题