Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to compare dates in JavaScript

In this tutorial, we will learn how to compare dates in JavaScript. Comparing dates is a common task that you may encounter while working with JavaScript. You might need to compare dates to determine which one is earlier or later, or to calculate the duration between two dates.

Before diving into date comparisons, let's first get a basic understanding of dates in JavaScript.

Understanding Dates in JavaScript

JavaScript provides a built-in Date object that allows you to work with dates and times. When you create a new Date object, it represents a single moment in time. You can create a new Date object representing the current date and time by calling the Date constructor without any arguments:

let currentDate = new Date();
console.log(currentDate); // Output: current date and time

You can also create a Date object representing a specific date and time by passing the desired values as arguments:

let specificDate = new Date(2022, 2, 1, 12, 30, 0, 0);
console.log(specificDate); // Output: Tue Mar 01 2022 12:30:00 GMT+0000 (Coordinated Universal Time)

Note that the month parameter is zero-based, meaning January is 0, February is 1, and so on.

Now that we understand the basics of JavaScript dates, let's move on to comparing them.

Comparing Dates

There are several ways to compare dates in JavaScript. The most common ones are:

  1. Comparing the timestamps
  2. Comparing the individual components (year, month, day, etc.)

1. Comparing the Timestamps

A timestamp is the number of milliseconds that have passed since January 1, 1970, 00:00:00 UTC. You can think of it like a unique number that represents a specific date and time.

To compare two dates, we can convert them to timestamps and then compare the resulting numbers. We can use the getTime() method of the Date object to get the timestamp of a date:

let date1 = new Date(2022, 0, 1); // January 1, 2022
let date2 = new Date(2022, 6, 1); // July 1, 2022

let timestamp1 = date1.getTime();
let timestamp2 = date2.getTime();

console.log(timestamp1); // Output: 1640995200000
console.log(timestamp2); // Output: 1656547200000

Now that we have the timestamps, we can compare them using the standard comparison operators:

console.log(timestamp1 > timestamp2); // Output: false (January 1, 2022 is earlier than July 1, 2022)
console.log(timestamp1 < timestamp2); // Output: true (January 1, 2022 is earlier than July 1, 2022)
console.log(timestamp1 === timestamp2); // Output: false (January 1, 2022 is not the same date as July 1, 2022)

2. Comparing the Individual Components

Another way to compare dates is by comparing their individual components (year, month, day, etc.). This method can be useful when you need to compare specific parts of the dates, such as only the years or only the months.

To access the individual components of a Date object, you can use the following methods:

  • getFullYear(): Returns the year of the date (e.g., 2022)
  • getMonth(): Returns the month of the date (0-11)
  • getDate(): Returns the day of the month (1-31)
  • getHours(): Returns the hour of the day (0-23)
  • getMinutes(): Returns the minutes of the hour (0-59)
  • getSeconds(): Returns the seconds of the minute (0-59)
  • getMilliseconds(): Returns the milliseconds of the second (0-999)

Let's compare the years, months, and days of two dates as an example:

let date1 = new Date(2022, 0, 1); // January 1, 2022
let date2 = new Date(2022, 6, 1); // July 1, 2022

// Comparing the years
console.log(date1.getFullYear() > date2.getFullYear()); // Output: false
console.log(date1.getFullYear() < date2.getFullYear()); // Output: false
console.log(date1.getFullYear() === date2.getFullYear()); // Output: true (both dates are in the same year)

// Comparing the months
console.log(date1.getMonth() > date2.getMonth()); // Output: false
console.log(date1.getMonth() < date2.getMonth()); // Output: true (January is before July)
console.log(date1.getMonth() === date2.getMonth()); // Output: false (January is not the same month as July)

// Comparing the days
console.log(date1.getDate() > date2.getDate()); // Output: false
console.log(date1.getDate() < date2.getDate()); // Output: false
console.log(date1.getDate() === date2.getDate()); // Output: true (both dates are on the first day of the month)

Keep in mind that this method is more verbose and can be less efficient than comparing timestamps, especially when comparing multiple components. However, it can be useful when you need more fine-grained control over the comparison.

Conclusion

In this tutorial, we learned how to compare dates in JavaScript using two methods: comparing timestamps and comparing individual components. Comparing timestamps is a simple and efficient way to compare dates, while comparing individual components can provide more control over the comparison process.

By understanding these methods and how to use them, you'll be well-equipped to handle date comparisons in your JavaScript projects.