Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Moment JS - check if a date is today or in the future

Tags:

momentjs

People also ask

Is MomentJS being deprecated?

MomentJs recently announced that the library is now deprecated. This is a big deal for the javascript community who actively downloads moment almost 15 million times a week. With that I began a journey during a Hackathon to replace moment in a core library at my company.


You can use the isSame function:

var iscurrentDate = startTime.isSame(new Date(), "day");
if(iscurrentDate) {

}

After reading the documentation: http://momentjs.com/docs/#/displaying/difference/, you have to consider the diff function like a minus operator.

                   // today < future (31/01/2014)
today.diff(future) // today - future < 0
future.diff(today) // future - today > 0

Therefore, you have to reverse your condition.

If you want to check that all is fine, you can add an extra parameter to the function:

moment().diff(SpecialTo, 'days') // -8 (days)

// Returns true if it is today or false if it's not
moment(SpecialToDate).isSame(moment(), 'day');

Since no one seems to have mentioned it yet, the simplest way to check if a Moment date object is in the past:

momentObj.isBefore()

Or in the future:

momentObj.isAfter()

Just leave the args blank -- that'll default to now.

There's also isSameOrAfter and isSameOrBefore.

N.B. this factors in time. If you only care about the day, see Dipendu's answer.


You can use the isAfter() query function of momentjs:

Check if a moment is after another moment.

moment('2010-10-20').isAfter('2010-10-19'); // true

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

http://momentjs.com/docs/#/query/is-after/


Update

moment().isSame('2010-02-01', 'day'); // Return true if we are the 2010-02-01

I have since found the isSame function, which in I believe is the correct function to use for figuring out if a date is today.

Original answer

Just in case someone else needs this, just do this:

const isToday = moment(0, "HH").diff(date, "days") == 0;

or if you want a function:

isToday = date => moment(0,"HH").diff(date, "days") == 0;

Where date is the date you want to check for.

Explanation

moment(0, "HH") returns today's day at midnight.

date1.diff(date2, "days") returns the number of days between the date1 and date2.


invert isBefore method of moment to check if a date is same as today or in future like this:

!moment(yourDate).isBefore(moment(), "day");

Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!