How to calculate the number of days between two dates in JavaScript ?

To calculate the number of days between two dates in JavaScript, we use the Date object and perform simple arithmetic using milliseconds. Below are the methods commonly used to determine the number of days between two dates:

Table of Content

  • Using Two different dates
  • Using One fixed date
  • Using UTC timestamps
  • Using Intl.DateTimeFormat Method

Using Two different dates

  • Use new Date() to create two date objects, date1 and date2.
  • Use date2.getTime() – date1.getTime() to calculate the time difference in milliseconds between the two dates.
  • Divide the time difference by the number of milliseconds in a day (1000 * 60 * 60 * 24) to obtain the number of days.

Example: The following JavaScript program will illustrate the process of finding the number of days between two dates.

javascript
let date1 = new Date("01/16/2024");
let date2 = new Date("01/26/2024");

// Calculating the time difference
// of two dates
let Difference_In_Time =
    date2.getTime() - date1.getTime();

// Calculating the no. of days between
// two dates
let Difference_In_Days =
    Math.round
        (Difference_In_Time / (1000 * 3600 * 24));

// To display the final no. of days (result)
console.log
    ("Total number of days between dates:\n" +
        date1.toDateString() + " and " +
        date2.toDateString() +
        " is: " + Difference_In_Days + " days");

Output
Total number of days between dates:
Tue Jan 16 2024 and Fri Jan 26 2024 is: 10 days

Using One fixed date

  • Present date is obtained using new Date().
  • Christmas date is set using date.getFullYear().
  • If Christmas has passed, adjust the date to the next year.
  • Calculate the difference in days using Math.round((christmas_day.getTime() – present_date.getTime()) / one_day).
  • Log the result to the console with present and Christmas dates.

Example: The below code find out the number of days between the current date and the christmas date.

javascript
// One day Time in ms (milliseconds)
let one_day = 1000 * 60 * 60 * 24;

// To set present_dates to two variables
let present_date = new Date();

// 0-11 is Month in JavaScript
let christmas_day = 
    new Date(present_date.getFullYear(), 11, 25);

// To Calculate next year's Christmas if passed already.
if (present_date.getMonth() == 
    11 && present_date.getDate() > 25) {
        christmas_day.setFullYear(christmas_day.getFullYear() + 1);
}

// To Calculate the result in milliseconds and 
// then converting into days
let Result = Math.round((christmas_day.getTime() - 
    present_date.getTime()) / one_day);

// To remove the decimals from the (Result) 
// resulting days value
let Final_Result = Result.toFixed(0);

// To display the final_result value
console.log("Number of days remaining till Christmas:\n" +
    present_date.toDateString() + " and " + 
    christmas_day.toDateString() +
    " is: " + Final_Result + " days");

Output
Number of days remaining till Christmas:
Wed Jan 17 2024 and Wed Dec 25 2024 is: 343 days

Using UTC timestamps

Another method to calculate the number of days between two dates involves converting both dates into UTC timestamps and then finding the difference. This approach can be useful when dealing with dates across different time zones, ensuring consistent results regardless of the local time zone settings.

Example:

JavaScript
let date1 = new Date("01/16/2024");
let date2 = new Date("01/26/2024");

// Convert dates to UTC timestamps
let utc1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());
let utc2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());

// Calculate the time difference in milliseconds
let timeDiff = Math.abs(utc2 - utc1);

// Convert milliseconds to days
let daysDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));

// Display the result
console.log(`Total number of days between dates:
${date1.toDateString()} and ${date2.toDateString()} is: ${daysDiff} days`);

Output
Total number of days between dates:
Tue Jan 16 2024 and Fri Jan 26 2024 is: 10 days

Using Intl.DateTimeFormat Method

The Intl.DateTimeFormat method can be used to format dates and calculate the difference in days between two dates. This method is particularly useful for handling locale-specific date formatting and calculations.

Example:

JavaScript
let date1 = new Date("01/16/2024");
let date2 = new Date("01/26/2024");

// Use Intl.DateTimeFormat to format dates
let dateFormatter = new Intl.DateTimeFormat('en-US');

// Calculate the number of days between two dates
let Difference_In_Days = Math.floor((date2 - date1) / (1000 * 60 * 60 * 24));

// Display the formatted dates and the difference in days
console.log(`Total number of days between dates:
${dateFormatter.format(date1)} and ${dateFormatter.format(date2)} is: 
${Difference_In_Days} days`);

Output
Total number of days between dates:
1/16/2024 and 1/26/2024 is: 10 days


JavaScript is best known for web page development but it is also used in a variety of non-browser environments. You can learn JavaScript from the ground up by following this JavaScript Tutorial and JavaScript Examples.