How to compare only date in moment.js

JavascriptMomentjs

Javascript Problem Overview


I am new to moment.js. I have a date object and it has some time associated with it. I just want to check if that date is greater than or equal to today's date, excluding the time when comparing.

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

I just want to check if dateToCompare is equal or greater than today's date. I have checked isSame of moment.js, but it seems to take string and only the date part. But I do not want to convert my date to string or manipulate it further. Because I am worried that javascript may do something unexpected when converting that date to string(like adding the offset or dst,etc), or may be I am wrong.

Sample isSame() from docs

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

Also I am looking for something like isSame() and isAfter() combined as one statement.

I need to compare using moment.js only.Please do not suggest plain javascript date comparison.

Javascript Solutions


Solution 1 - Javascript

The docs are pretty clear that you pass in a second parameter to specify granularity.

> 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.

For your case you would pass 'day' as the second parameter.

Solution 2 - Javascript

Meanwhile you can use the isSameOrAfter method:

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

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

Solution 3 - Javascript

In my case i did following code for compare 2 dates may it will help you ...

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>

Solution 4 - Javascript

You could use startOf('day') method to compare just the date

Example :

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

dateToCompare.startOf('day').isSame(today.startOf('day'));

Solution 5 - Javascript

For checking one date is after another by using isAfter() method.

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

For checking one date is before another by using isBefore() method.

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

For checking one date is same as another by using isSame() method.

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

Solution 6 - Javascript

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

checking 2022-01-07 this with current date

if current date is beyond 6th Jan 2022, it returns false!

Solution 7 - Javascript

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNoobGeekView Question on Stackoverflow
Solution 1 - JavascriptzzzzBovView Answer on Stackoverflow
Solution 2 - JavascriptsandroocoView Answer on Stackoverflow
Solution 3 - JavascriptRenish GotechaView Answer on Stackoverflow
Solution 4 - JavascriptAnurag Aron TiggaView Answer on Stackoverflow
Solution 5 - JavascriptCodemakerView Answer on Stackoverflow
Solution 6 - JavascriptAnupam MauryaView Answer on Stackoverflow
Solution 7 - Javascriptpatel jigarView Answer on Stackoverflow