如何在javascript中使用moment(moment.js)做大于或等于?

Posted

技术标签:

【中文标题】如何在javascript中使用moment(moment.js)做大于或等于?【英文标题】:How to do a greater than or equal to with moments (moment.js) in javascript? 【发布时间】:2015-02-04 06:36:27 【问题描述】:

基本上,我想做一个myMoment >= yourMoment。没有myMoment.isSameOrAfter 并结合isSame.isAfter 写出来有点冗长。

还有什么选择?将 moment 转换为 js 日期并使用>= 进行比较?

【问题讨论】:

你试过 if(!moment1.isBefore(moment2)) 吗? @Donal - 我在 chrome 中调试并注意到 myMoment == yourMoment 是假的,但 myMoment.isSame(yourMoment) 是真的。 @donal javascript 不支持运算符重载,因此像 和 >= 这样的关系运算符实际上是在进行引用比较。因此,如果它“有效”,那完全是个意外,因为它比较了这些复杂对象的原始值。 @JohnZabroski 这不正确,JS 使用 valueOf 原型方法进行比较,因此 >、>=、 @JohnZabroski 我再说一遍,在 Moment.js 的情况下,它保证是一个数字:momentjs.com/docs/#/displaying/unix-timestamp-milliseconds,另见***.com/questions/22600856/… 【参考方案1】:

可以在momentjs中使用isSameOrAfter方法:

moment1.isSameOrAfter(moment2);

【讨论】:

仅在moment.js 2.10.7+版本中可用 仅供参考:isSameOrBefore 也可用【参考方案2】:

好的,我刚用了 moment.js .diff() function.

myMoment.diff(yourMoment) >= 0

足够接近。

【讨论】:

“足够接近”是什么意思?这完全是正确的行为。如果你想要 isOnOrAfter,只需在 Moment 原型中添加一个函数即可。 值得一提的是 diff 以毫秒为单位返回差异,所以如果你想通过说 next week is diff(yourMoment) >= 7 来扩展它,你将失败。另外,不要只在一天中添加毫秒,因为时区等会搞砸你。 跟进@NickSteele 的评论,您可以通过第二个参数将其用于不同的时间度量。例如:(myMoment.diff(yourMoment, 'minutes') >= 15) 或 (myMoment.diff(yourMoment, 'days') >= 7)【参考方案3】:
let A = moment('2020-01-02');
let B = moment('2020-01-01');
let C = moment('2020-01-03');
console.log(A.diff(B, 'days'));// => 1
console.log(A.diff(C, 'days'));// => -1

支持的度量是年、月、周、日、小时、分钟和秒momentjs.com

【讨论】:

以上是关于如何在javascript中使用moment(moment.js)做大于或等于?的主要内容,如果未能解决你的问题,请参考以下文章

Vue modules, moment-timezone - 如何正确加载 moment-timezone 以及如何使用 2012-2022 数据

at the moment today是啥意思

如何加载带有requirejs的Tempus Dominus Bootstrap 4(在Moodle中)? (错误:没有为datetimepicker定义调用)

javascript moment.js的使用

使用moment.js轻松管理日期和时间

我想在Postman Native App中使用moment.js(或任何其他脚本)