
Get days between two dates in JavaScript
Calculate days between two dates in JavaScript with a simple function. Learn how to handle DST issues and get accurate results.
To get the number of days between two given dates, you can do that by converting them to UTC timestamps and then computing the difference in days based on the millisecond difference.
JavaScript code for calculating days between two dates
A simple JavaScript code to get the number of days between two given dates is:
function getDaysBetweenTwoDates(firstDateInISO, secondDateInISO): number {
const startDate = new Date(firstDateInISO);
const endDate = new Date(secondDateInISO);
const firstDate = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());
const secondDate = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());
return Math.abs((firstDate.valueOf() - secondDate.valueOf()) / (24 * 60 * 60 * 1000));
}
Simply subtracting the dates will not work over the Daylight Savings Time boundary (for example, April 1 to April 30 or October 1 to October 31). This reduces all of the hours to ensure you get a day and solves any DST issues by using UTC.
Code explanation
Let’s break down the code:
Input Parameters:
firstDateInISO
: A string representing the first date in ISO format.secondDateInISO
: A string representing the second date in ISO format.
Date Conversion:
- The code first converts the input date strings into
Date
objects using thenew Date()
constructor. - It then extracts the year, month, and date components from these
Date
objects usinggetFullYear()
,getMonth()
, andgetDate()
methods.
- The code first converts the input date strings into
Date Comparison:
- The code converts the extracted year, month, and date components of both dates into UTC timestamps using
Date.UTC()
. - These UTC timestamps are then used to calculate the difference in milliseconds between the two dates by subtracting the UTC timestamps and taking the absolute value.
- The code converts the extracted year, month, and date components of both dates into UTC timestamps using
Calculating Days:
- The code divides the time difference in milliseconds by the total number of milliseconds in a day (24 hours * 60 minutes * 60 seconds * 1000 milliseconds) to get the number of days between the two dates.
- The result is returned as a number representing the absolute difference in days between the two input dates.
Practical example with unit tests for calculating days between dates
Here is a workable example that calculates days between two days and includes unit tests.
Comments