How do I compare two dates in JavaScript?
![](/assets/cover/pineapple-at-work-800.webp)
Comparing Date
objects in JavaScript is often confusing. Equality is not as easy as you might think, you may have to consider timezones, and dates also act like numbers. That's a lot to wrap your head around, so let's take a look at each of these use-cases in detail.
Date equality comparison
Comparing two dates using the equality operators (==
or ===
) is ineffective, as it compares the objects by reference. Luckily, Date.prototype.toISOString()
returns a string representation of the date in a standardized format, which can be used to compare two dates.
const isSameDate = (dateA, dateB) => dateA.toISOString() === dateB.toISOString(); isSameDate(new Date('2020-10-20'), new Date('2020-10-20')); // true
Date is before another date
As mentioned previously, Date
objects act like numbers. This means that you can use the less than operator (<
) to check if a date comes before another date.
const isBeforeDate = (dateA, dateB) => dateA < dateB; isBeforeDate(new Date('2020-10-20'), new Date('2020-10-21')); // true
Date is after another date
Similarly, you can use the greater than operator (>
) to check if a date comes after another date.
const isAfterDate = (dateA, dateB) => dateA > dateB; isAfterDate(new Date('2020-10-21'), new Date('2020-10-20')); // true
Date is between two dates
Combining the previous two snippets, you can check if a date is between two other dates.
const isBetweenDates = (dateStart, dateEnd, date) => date > dateStart && date < dateEnd; isBetweenDates( new Date('2020-10-20'), new Date('2020-10-30'), new Date('2020-10-19') ); // false isBetweenDates( new Date('2020-10-20'), new Date('2020-10-30'), new Date('2020-10-25') ); // true