如何在moment.js中只比较日期

How to compare only date in moment.js

本文关键字:比较 日期 js moment      更新时间:2023-09-26

我是moment.js的新手。我有一个日期对象,它有一些时间与之关联。我只想检查该日期是否大于或等于今天的日期,不包括比较时的时间

 var dateToCompare = 2015-04-06T18:30:00.000Z

我只是想检查一下dateToCompare是否等于或大于今天的日期。我已经检查了isSame of moment.js,但它似乎只包含字符串和日期部分。但我不想将我的日期转换为字符串或进一步操作它。因为我担心javascript在将日期转换为字符串时可能会做一些意想不到的事情(比如添加偏移量或dst等),或者可能是我错了。

来自文档的示例isSame()

moment('2010-10-20').isSame('2010-10-20');

此外,我正在寻找类似isSame()和isAfter()的组合语句。

我只需要使用moment.js进行比较。请不要建议使用纯javascript日期比较。

文档非常清楚,您可以传入第二个参数来指定粒度。

如果要将粒度限制为毫秒以外的单位,请将这些单位作为第二个参数传递。

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true

由于第二个参数决定精度,而不仅仅是要检查的单个值,因此使用day将检查年、月和日。

对于您的情况,您将传递'day'作为第二个参数。

同时您可以使用isSameOrAfter方法:

moment('2010-10-20').isSameOrAfter('2010-10-20', 'day');

文档:https://momentjs.com/docs/#/query/is-相同或在/

之后

在我的案例中,我做了以下代码来比较两个日期,这可能会对你有所帮助。。。

var date1 = "2010-10-20";
var date2 = "2010-10-20";
var time1 = moment(date1).format('YYYY-MM-DD');
var time2 = moment(date2).format('YYYY-MM-DD');
if(time2 > time1){
    console.log('date2 is Greater than date1');
} else if(time2 < time1) {
    console.log('date2 is Less than date1');
} else {
    console.log('Both date are same');
}
<script src="https://momentjs.com/downloads/moment.js"></script>

您可以使用startOf('day')方法仅比较日期

示例:

var dateToCompare = moment("06/04/2015 18:30:00");
var today = moment(new Date());
dateToCompare.startOf('day').isSame(today.startOf('day'));
moment('2022-01-07').isAfter(moment().format('YYYY-MM-DD'), 'day');

检查2022-01-07这与当前日期

如果当前日期超过2022年1月6日,则返回false!

使用isAfter()方法检查一个日期是一个又一个日期。

moment('2020-01-20').isAfter('2020-01-21'); // false
moment('2020-01-20').isAfter('2020-01-19'); // true

使用isBefore()方法检查一个日期在另一个日期之前。

moment('2020-01-20').isBefore('2020-01-21'); // true
moment('2020-01-20').isBefore('2020-01-19'); // false

使用isSame()方法检查一个日期和另一个日期是否相同。

moment('2020-01-20').isSame('2020-01-21'); // false
moment('2020-01-20').isSame('2020-01-20'); // true

moment('date').toDate().getTime()>moment()