为什么矩的isSameOrBefore
和isSameOrAfter
函数不适用于isBefore
和isAfter
的数据?
以下是isSameOrBefore
和isSameOrAfter
无法正常工作的一些非常简单的孤立示例:
moment("2018-10-12 10:44:01").isSameOrBefore(moment("2018-10-12 10:44:00"))
TypeError: moment(...).isSameOrBefore is not a function [Learn More]
moment("2018-10-12 10:44:01").isSameOrAfter(moment("2018-10-12 10:44:02"))
TypeError: moment(...).isSameOrAfter is not a function [Learn More]
但是使用相同类型的数据,isBefore
和isAfter
可以正常工作:
moment("2018-10-12 10:44:01").isBefore(moment("2018-10-12 10:44:00"))
false
moment("2018-10-12 10:44:01").isAfter(moment("2018-10-12 10:44:02"))
false
moment("2018-10-12 10:44:00").isBefore(moment("2018-10-12 10:44:01"))
true
moment("2018-10-12 10:44:02").isAfter(moment("2018-10-12 10:44:01"))
true
答案 0 :(得分:2)
针对我的解决方案是将Moment.js更新到2.23.0版本。我的moment.d.ts
文件误导了我,该文件出于未知的原因而使用的是Moment.js的2.11.1版本,而不是我安装的版本(版本2.9.0)。
更新后,请确保在浏览器的调试器的文件浏览器中签入moment.js文件,并验证其是否与项目中的文件匹配-如果不匹配,至少在Firefox / Waterfox中,请尝试重新启动浏览器,然后在遇到问题的项目页面上按Ctrl + F5。
这对我来说是一个教训,不要过于相信TypeScript的类型安全性!
答案 1 :(得分:1)
从版本 2.11.0 开始,引入了isSameOrBefore
和isSameOrAfter
方法:https://momentjs.com/docs/#/query/is-same-or-before/
您可以升级版本并尝试以下操作:
moment('2018-10-12 10:44:01').isSameOrBefore('2018-10-12 10:44:00')