Get the difference between 2 Dates in Days using TypeScript

avatar

Borislav Hadzhiev

Last updated: Mar 7, 2022

banner

Photo from Unsplash

Get the difference between 2 Dates in Days using TypeScript #

To get the difference between 2 dates in days:

  1. Get the number of milliseconds between the unix epoch and the dates.
  2. Subtract the milliseconds of the start date from the milliseconds of the end date.
  3. Convert the milliseconds to days.
index.ts
function getDayDiff(startDate: Date, endDate: Date): number { const msInDay = 24 * 60 * 60 * 1000; return Math.round(Math.abs(Number(endDate) - Number(startDate)) / msInDay); } // 👇️ 10 console.log(getDayDiff(new Date('2022-03-17'), new Date('2022-03-27'))); // 👇️ 30 console.log(getDayDiff(new Date('2022-04-17'), new Date('2022-05-17')));

We created a reusable function which returns the number of days between 2 dates.

The msInDay variable stores the number of milliseconds there are in a day.

When you convert a Date object to a number, you get back a timestamp that represents the milliseconds elapsed between January 1st, 1970 and the given date.

It is the same as calling the getTime() method on both of the Date objects to get a timestamp in milliseconds.

index.ts
function getDayDiff(startDate: Date, endDate: Date): number { const msInDay = 24 * 60 * 60 * 1000; // 👇️ explicitly calling getTime() return Math.round( Math.abs(endDate.getTime() - startDate.getTime()) / msInDay, ); } // 👇️ 10 console.log(getDayDiff(new Date('2022-03-17'), new Date('2022-03-27'))); // 👇️ 30 console.log(getDayDiff(new Date('2022-04-17'), new Date('2022-05-17')));

This might be the more clear and explicit approach for readers of your code.

The next step is to divide the result by the number of milliseconds in a day to convert the value from milliseconds to days.

We used the Math.abs function to handle a scenario where we subtract a greater timestamp from a smaller one.

The Math.abs function returns the absolute value of a number. In other words, if the number is positive, the number is returned and if the number is negative, the negation of the number is returned.

index.js
console.log(Math.abs(-5)); // 👉️ 5 console.log(Math.abs(5)); // 👉️ 5

We passed the value to the Math.round function to round to the nearest integer to deal with Daylight saving time.

Here are some examples of how the Math.round function works.

index.js
console.log(Math.round(2.49)); // 👉️ 2 console.log(Math.round(2.5)); // 👉️ 3

The function rounds the number up or down to the nearest integer.

If the number is positive and its fractional part is greater than or equal to 0.5, it gets rounded to the next higher absolute value.

If the number is positive and its fractional portion is less than 0.5, it gets rounded to the lower absolute value.

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.
book cover
You can use the search field on my Home Page to filter through all of my articles.