Skip to content

Home

How do I compare two dates in JavaScript?

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

More like this

Start typing a keyphrase to see matching snippets.