Finding Number of Days Between Two Dates JavaScript

Finding the number of days between two dates is a common requirement in JavaScript applications. While you can implement complex date calculations manually, JavaScript's built-in Date object provides a much simpler and more reliable approach.

The Simple Approach Using Date Objects

The most straightforward method is to convert date strings to Date objects and calculate the difference in milliseconds, then convert to days:

const daysBetweenDates = (date1, date2) => {
    const firstDate = new Date(date1);
    const secondDate = new Date(date2);
    
    const timeDifference = Math.abs(secondDate - firstDate);
    const daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24));
    
    return daysDifference;
};

const str1 = '2020-05-21';
const str2 = '2020-05-25';

console.log(daysBetweenDates(str1, str2));
4

How It Works

The Date constructor automatically handles date parsing and leap years. When you subtract two Date objects, JavaScript returns the difference in milliseconds. We then convert this to days by dividing by milliseconds per day (1000 ms × 60 seconds × 60 minutes × 24 hours).

Handling Different Date Orders

const daysBetweenDates = (date1, date2) => {
    const firstDate = new Date(date1);
    const secondDate = new Date(date2);
    
    const timeDifference = Math.abs(secondDate - firstDate);
    return Math.floor(timeDifference / (1000 * 60 * 60 * 24));
};

console.log(daysBetweenDates('2020-05-21', '2020-05-25')); // Later date second
console.log(daysBetweenDates('2020-05-25', '2020-05-21')); // Earlier date second
console.log(daysBetweenDates('2020-01-01', '2020-12-31')); // Across a year
4
4
365

More Robust Version with Error Handling

const daysBetweenDates = (date1, date2) => {
    const firstDate = new Date(date1);
    const secondDate = new Date(date2);
    
    // Check for invalid dates
    if (isNaN(firstDate.getTime()) || isNaN(secondDate.getTime())) {
        throw new Error('Invalid date format');
    }
    
    const timeDifference = Math.abs(secondDate - firstDate);
    return Math.floor(timeDifference / (1000 * 60 * 60 * 24));
};

try {
    console.log(daysBetweenDates('2020-05-21', '2020-05-25'));
    console.log(daysBetweenDates('2020-02-28', '2020-03-01')); // Leap year
} catch (error) {
    console.log('Error:', error.message);
}
4
2

Comparison of Approaches

Method Complexity Leap Year Handling Recommended
Manual Calculation High Manual No
Date Object Low Automatic Yes

Conclusion

Use JavaScript's built-in Date object for calculating days between dates. It automatically handles leap years, different month lengths, and timezone conversions, making it much more reliable than manual calculations.

Updated on: 2026-03-15T23:19:00+05:30

309 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements