When working with dates in JavaScript, you may come across a scenario where you need to determine if a given date refers to a day in the past. Simply comparing dates using the getTime()
method isn’t sufficient, as dates may have different times associated with them. This article will guide you through a solution to this problem.
To check if a date references a past day in JavaScript, you can use the following function:
const isFirstDatePastSecondDate = (firstDate, secondDate) => {
if (firstDate.setHours(0, 0, 0, 0) - secondDate.setHours(0, 0, 0, 0) >= 0) {
return false; // First date is in the future or today
}
return true; // First date is in the past
}
In this function, the setHours()
method is used to set the time for both dates to 00:00:00. By doing so, the comparison will only consider the dates without taking the time into account.
Here’s a more concise version of the function using implicit return:
const isFirstDatePastSecondDate = (firstDate, secondDate) => firstDate.setHours(0, 0, 0, 0) - secondDate.setHours(0, 0, 0, 0) < 0;
To use this function, let’s consider an example where we compare yesterday’s date to today’s date:
const today = new Date();
const yesterday = new Date(today);
yesterday.setDate(yesterday.getDate() - 1);
console.log(isFirstDatePastSecondDate(yesterday, today)); // Output: true
console.log(isFirstDatePastSecondDate(today, yesterday)); // Output: false
In the example above, we create two date objects - today
and yesterday
. We set the yesterday
date to the previous day by using the setDate()
method with a value of yesterday.getDate() - 1
. Finally, we call the isFirstDatePastSecondDate
function to check if yesterday
is in the past compared to today
, and vice versa.
By following this approach, you can accurately determine if a given date refers to a day in the past in JavaScript.