Now and then you need this function, you want to see if someone's contract or whatever is passed as of today.
So let's see how we can achieve this in JavaScript
.
We will build a custom function for this so it will be reusable.
JavaScript Check if a Date is in the Past
In essence we could use getTime()
to get the timestamp, but for instance someones contract must end on this day regardless of the time?
var dateInPast = function(firstDate, secondDate) {
if (firstDate.setHours(0, 0, 0, 0) <= secondDate.setHours(0, 0, 0, 0)) {
return true;
}
return false;
};
var past = new Date('2020-05-20');
var today = new Date();
var future = new Date('2030-05-20');
dateInPast(past, today);
dateInPast(future, today);
I've written down the full function just to explain it better, as you can see we define a dateInPast
function which accepts two dates.
We then check if the firstDate is smaller than or equal to the secondDate. If so it is in the past or today!
We reset the hours/minutes on it so it will be a general day.
Let's now turn this into an arrow function for cleaner code:
dateInPastArrow = (firstDate, secondDate) =>
firstDate.setHours(0, 0, 0, 0) <= secondDate.setHours(0, 0, 0, 0);
console.log(dateInPastArrow(past, today));
console.log(dateInPastArrow(future, today));
As you can see much cleaner and quicker!
Feel free to play with this Codepen.
See the Pen Vanilla JavaScript Check if Date is Past by Chris Bongers (@rebelchris) on CodePen.
Thank you for reading, and let's connect!
Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter
Top comments (3)
Heh, my solution to the same problem:
Comparing timestamps/epoch/integers ;-)
Just a point - your routine has a side effect of actually modifying the date you passed in... Seems unwise. Perhaps:
Also, shouldn't the comparison operator be just less than? If it's equal it's not past but present (or, to be more precise concurrent with the second date, since that could be any point in time)