This article is about subtracting and comparing 2 dates in Javascript. Weâ€™ll have a look at the fundamentals and then walk through several examples of applying that knowledge in practice.

## Overview

There are many scenarios where you may need to subtract 2 dates. For example, you want to calculate the duration of a task, the exact age of a person, the difference between 2 dates for a booking system (hotel, air ticket, etc.), or the time left until a certain event in the future.

Fortunately, Javascript allows us to subtract 2 date objects directly, like this:

`const result = date1 - date2;`

result will be the number of milliseconds. If result is a negative number, then date1 is earlier than date2 and vice versa.

To convert result to hours, divide it by 1000 * 60 * 60:

`hours = result / (1000 * 60 * 60)`

In case you want to turn result into days, divide it by 1000 * 60 * 60 * 24:

`days = result / (1000 * 60 * 60 * 24)`

Now, letâ€™s take a look at some practical examples to deeply understand all of this.

## Examples

### Calculating the Age of a Person

To calculate the age of a person, what we have to do is to get the current date and subtract the birthdate from it. Hereâ€™s the code:

```
const birthdate = new Date(1985, 11, 17);
const today = new Date();
const diff = today - birthdate;
const age = Math.floor(diff / (1000 * 60 * 60 * 24 * 365.25));
// we use 365.25 because the average year is 365.25 days long. Every 4 years, we add a day to account for leap years.
console.log(age);
```

Output:

`37`

### Calculating the Days Left Until an Event (Countdown)

To calculate the number of days left until an event, we can subtract the current date from the event date. Hereâ€™s the code:

```
const now = new Date();
const endOfYear = new Date('2023-12-31');
const days = Math.floor((endOfYear - now) / 1000 / 60 / 60 / 24);
console.log('The number of days until the end of 2023 is:', days);
```

Output:

`The number of days until the end of 2023 is: 358`

When you run the code snippet above, it will return a different result. This makes sense because new Date() will give different values at different times.

### Subtracting Two Dates in Two Different Timezones

If you want to subtract 2 dates belonging to 2 different timezones, construct date objects with date strings containing timezone information. Then we can subtract 2 like the examples above. Javascript will take care of the calculations for us.

This example calculates the time difference between 2 dates (one in UTC and the other in EST time):

```
// UTC
const date1 = new Date('2023-01-02T00:00:00.000Z');
// Eastern Standard Time (EST). UTC-5
const date2 = new Date('2023-01-01T00:00:00.000-05:00');
const diff = date1 - date2;
const diffInHours = diff / 1000 / 60 / 60;
console.log(diffInHours);
```

Output:

`19`