moment's isSameOrBefore和isSameOrAfter 返回"is not a function"当从一瞬间调用并经过一会儿时返回



为什么momentjs isSameOrBeforeisSameOrAfter函数不适用于isBeforeisAfter工作的数据?

以下是一些非常简单的孤立示例,其中isSameOrBeforeisSameOrAfter不起作用:

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]

但是,对于相同类型的数据,isBeforeisAfter工作正常:

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 的类型安全性!

isSameOrBeforeisSameOrAfter 方法从版本 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')

最新更新