如何在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 数据
如何加载带有requirejs的Tempus Dominus Bootstrap 4(在Moodle中)? (错误:没有为datetimepicker定义调用)