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

How to compare only date in moment.js

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

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

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

来自文档的示例 isSame()

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

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

我需要使用 moment.js 进行比较 only.Please 不建议使用普通 javascript 日期比较。

The docs are pretty clear 你传入第二个参数来指定粒度。

If you want to limit the granularity to a unit other than milliseconds, pass the units as the second parameter.

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

As the second parameter determines the precision, and not just a single value to check, using day will check for year, month and day.

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

同时您可以使用isSameOrAfter方法:

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

文档:https://momentjs.com/docs/#/query/is-same-or-after/

在我的例子中,我做了以下代码来比较 2 个日期可能会对你有所帮助......

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 Greter 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'));

使用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

时刻('date').toDate().getTime() > 时刻()

moment('2022-01-07').isAfter(moment().format('YYYY-MM-DD'), 'day');

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

如果当前日期超过 2022 年 1 月 6 日,则 returns 错误!