为什么momentjs 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
,这个问题的解决方案是更新到Moment.js的2.23.0版本。 我被我的moment.d.ts
文件误导了,由于未知原因,该文件是Moment的2.11.1版本.js而不是我安装的版本(版本2.9.0)。
更新后,请务必暂时签入浏览器调试器的文件资源管理器.js文件并验证它是否与项目中的文件匹配 - 如果没有,至少在 Firefox/Waterfox 中,请尝试重新启动浏览器,然后在您遇到问题的项目页面上按 Ctrl + F5。
这对我来说是一个教训,不要那么相信 TypeScript 的类型安全性!
isSameOrBefore
和 isSameOrAfter
方法从版本 2.11.0 开始引入: https://momentjs.com/docs/#/query/is-same-or-before/
您可以升级版本并尝试此操作:
moment('2018-10-12 10:44:01').isSameOrBefore('2018-10-12 10:44:00')