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

Noo*_*eek 90 javascript momentjs

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

 var dateToCompare = 2015-04-06T18:30:00.000Z
Run Code Online (Sandbox Code Playgroud)

我只想检查dateToCompare是否等于或大于今天的日期.我已经检查了is.ame of moment.js,但它似乎采取字符串,只有日期部分.但我不想将我的日期转换为字符串或进一步操纵它.因为我担心javascript可能会在将该日期转换为字符串时出现意外情况(例如添加偏移量或dst等),或者可能是我错了.

来自docs的示例isSame()

moment('2010-10-20').isSame('2010-10-20');
Run Code Online (Sandbox Code Playgroud)

此外,我正在寻找像isSame()和isAfter()这样的东西组合成一个语句.

我需要仅使用moment.js进行比较.请不要建议简单的javascript日期比较.

zzz*_*Bov 157

文档很清楚,您传入第二个参数来指定粒度.

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

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

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

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

  • @NoobGeek从版本2.10.7开始,现在有isSameOrBefore()和isSameOrAfter(). (6认同)
  • 只是补充:"由于第二个参数决定了精度,而不仅仅是一个要检查的值,使用day将检查年,月和日." (4认同)
  • 谢谢!好像我不必转换为字符串。但是我们对 isSame() 和 isAfter() 有什么通用的方法吗? (2认同)
  • 我已经用过了.谢谢!只是想看看是否有一个共同的功能,而不是两者都很难使用. (2认同)

san*_*oco 32

同时你可以使用这个isSameOrAfter方法:

moment('2010-10-20').isSameOrAfter('2010-10-20', 'day');
Run Code Online (Sandbox Code Playgroud)


Ren*_*cha 10

在我的情况下,我做了以下代码来比较 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');
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://momentjs.com/downloads/moment.js"></script>
Run Code Online (Sandbox Code Playgroud)


小智 9

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

例子 :

var dateToCompare = moment("06/04/2015 18:30:00");
var today = moment(new Date());

dateToCompare.startOf('day').isSame(today.startOf('day'));
Run Code Online (Sandbox Code Playgroud)


Anu*_*rya 5

moment('2022-01-07').isAfter(moment().format('YYYY-MM-DD'), 'day');
Run Code Online (Sandbox Code Playgroud)

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

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