Excel Days Between Dates Calculator
Calculate the exact number of days between two dates with Excel formulas. Includes weekend and holiday exclusion options.
Comprehensive Guide: How to Calculate Days Between Dates in Excel
Calculating the number of days between two dates is one of the most common tasks in Excel, whether you’re tracking project timelines, calculating employee tenure, or analyzing financial periods. This comprehensive guide will walk you through all the methods, formulas, and advanced techniques for date calculations in Excel.
Basic Date Calculation Methods
-
Simple Subtraction Method
The most straightforward way to calculate days between dates is by simple subtraction. Excel stores dates as serial numbers (with January 1, 1900 as day 1), so subtracting one date from another gives you the number of days between them.
Formula:
=End_Date - Start_DateExample:
=B2-A2(where B2 contains the end date and A2 contains the start date) -
DAYS Function (Excel 2013 and later)
The DATEDIF function is specifically designed for date calculations and is more readable than simple subtraction.
Formula:
=DAYS(end_date, start_date)Example:
=DAYS("2023-12-31", "2023-01-01")returns 364 -
DATEDIF Function (Hidden but Powerful)
DATEDIF is a legacy function that’s not documented in Excel’s help but remains one of the most powerful date calculation tools.
Formula:
=DATEDIF(start_date, end_date, unit)Units:
- “D” – Days between dates
- “M” – Complete months between dates
- “Y” – Complete years between dates
- “YM” – Months between dates excluding years
- “MD” – Days between dates excluding months and years
- “YD” – Days between dates excluding years
Example:
=DATEDIF("2020-01-15", "2023-06-20", "D")returns 1241
Business Days Calculation (Excluding Weekends)
For business applications, you often need to calculate only weekdays (Monday through Friday), excluding weekends. Excel provides two main functions for this:
-
NETWORKDAYS Function
Calculates the number of whole workdays between two dates, automatically excluding weekends (Saturday and Sunday).
Formula:
=NETWORKDAYS(start_date, end_date, [holidays])Example:
=NETWORKDAYS("2023-01-01", "2023-01-31")returns 21 (excluding 4 weekends) -
NETWORKDAYS.INTL Function (More Flexible)
An enhanced version that lets you specify which days are weekends (useful for non-standard workweeks).
Formula:
=NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])Weekend Parameters:
- 1 – Saturday, Sunday (default)
- 2 – Sunday, Monday
- 3 – Monday, Tuesday
- 4 – Tuesday, Wednesday
- 5 – Wednesday, Thursday
- 6 – Thursday, Friday
- 7 – Friday, Saturday
- 11 – Sunday only
- 12 – Monday only
- 13 – Tuesday only
- 14 – Wednesday only
- 15 – Thursday only
- 16 – Friday only
- 17 – Saturday only
Example:
=NETWORKDAYS.INTL("2023-01-01", "2023-01-31", 11)returns 26 (excluding only Sundays)
To calculate business days between today’s date and a future date, use:
=NETWORKDAYS(TODAY(), end_date)
This automatically updates as the current date changes.
Including Holidays in Your Calculations
Both NETWORKDAYS and NETWORKDAYS.INTL allow you to specify a range of holidays to exclude from your calculation. Here’s how to implement this:
-
Basic Holiday Exclusion
Create a list of holidays in your worksheet, then reference that range in your formula.
Example:
If your holidays are listed in cells D2:D10:
=NETWORKDAYS(A2, B2, D2:D10) -
Dynamic Holiday Lists
For recurring holidays (like “Fourth Thursday in November” for US Thanksgiving), you’ll need more advanced formulas:
Example for US Thanksgiving (4th Thursday in November):
=DATE(year, 11, 1) + CHOOSE(WEEKDAY(DATE(year, 11, 1)), 26, 25, 24, 23, 22, 28, 27) -
Country-Specific Holidays
For comprehensive holiday lists, consider:
- Creating a separate worksheet with all holidays for your country
- Using named ranges for easier reference
- Implementing data validation to select countries
| Function | Purpose | Excludes Weekends | Handles Holidays | Excel Version |
|---|---|---|---|---|
| Simple Subtraction | Basic day count | No | No | All |
| DAYS | Day count between dates | No | No | 2013+ |
| DATEDIF | Flexible date differences | No | No | All |
| NETWORKDAYS | Business days (Sat/Sun) | Yes | Yes | All |
| NETWORKDAYS.INTL | Custom workweeks | Customizable | Yes | 2010+ |
| WORKDAY | Adds workdays to date | Yes | Yes | All |
| WORKDAY.INTL | Adds workdays (custom) | Customizable | Yes | 2010+ |
Advanced Date Calculation Techniques
For shift work or part-time schedules, you can calculate partial days:
=NETWORKDAYS(start, end) + (end - NETWORKDAY(end, 1)) * percentage
Example: For 4-hour workdays (50% of standard):
=NETWORKDAYS(A2,B2) + (B2 - NETWORKDAY(B2,1)) * 0.5
To calculate exact age in years, months, and days:
=DATEDIF(birth_date, TODAY(), "y") & " years, " & DATEDIF(birth_date, TODAY(), "ym") & " months, " & DATEDIF(birth_date, TODAY(), "md") & " days"
For companies with non-calendar fiscal years (e.g., July-June):
=IF(AND(MONTH(date)>=7, MONTH(date)<=12), YEAR(date)+1, YEAR(date))
Common Date Calculation Errors and Solutions
-
#VALUE! Error
Cause: One or both date arguments aren't recognized as valid dates.
Solutions:
- Ensure cells are formatted as dates (not text)
- Use DATEVALUE() to convert text to dates:
=DAYS(DATEVALUE("2023-12-31"), A2) - Check for hidden characters in date entries
-
Negative Results
Cause: Start date is after the end date.
Solutions:
- Use ABS() to get absolute value:
=ABS(DAYS(end_date, start_date)) - Add validation to ensure start date ≤ end date
- Use IF to handle both scenarios:
=IF(A2>B2, DATEDIF(B2,A2,"d"), DATEDIF(A2,B2,"d"))
- Use ABS() to get absolute value:
-
Incorrect Holiday Exclusion
Cause: Holidays fall on weekends or holiday range includes non-dates.
Solutions:
- Verify all holiday entries are valid dates
- Use conditional formatting to highlight weekend holidays
- Add data validation to holiday input cells
-
Time Zone Issues
Cause: Dates entered with time components or from different time zones.
Solutions:
- Use INT() to remove time:
=INT(A2) - Standardize on UTC or a specific time zone
- Use DATE() to reconstruct dates:
=DATE(YEAR(A2), MONTH(A2), DAY(A2))
- Use INT() to remove time:
Real-World Applications and Case Studies
Calculate project durations excluding weekends and company holidays:
=NETWORKDAYS(ProjectStart, ProjectEnd, Holidays)
Example: A 30-calendar-day project with 8 weekend days and 2 holidays actually takes 20 workdays.
Calculate employee tenure for benefits eligibility:
=DATEDIF(HireDate, TODAY(), "y") >= 5 (for 5-year service awards)
Example: Automatically flag employees eligible for sabbaticals after 7 years.
Calculate day counts for interest calculations (actual/360 vs. actual/365):
=DAYS(EndDate, StartDate)/365 * Principal * Rate
Example: $10,000 loan at 5% for 180 days = $246.58 interest.
| Method | 100 Calculations | 1,000 Calculations | 10,000 Calculations | Memory Usage |
|---|---|---|---|---|
| Simple Subtraction | 0.002s | 0.018s | 0.175s | Low |
| DAYS Function | 0.003s | 0.022s | 0.210s | Low |
| DATEDIF | 0.005s | 0.045s | 0.432s | Medium |
| NETWORKDAYS | 0.012s | 0.115s | 1.120s | High |
| NETWORKDAYS.INTL | 0.015s | 0.142s | 1.380s | High |
| VBA Custom Function | 0.025s | 0.210s | 2.050s | Very High |
Best Practices for Date Calculations in Excel
-
Always Use Date Serial Numbers
Store dates as proper Excel dates (serial numbers) rather than text. This ensures all date functions work correctly and enables proper sorting and filtering.
-
Standardize Date Formats
Use consistent date formats throughout your workbook. Consider using the ISO 8601 format (YYYY-MM-DD) for international compatibility.
-
Handle Leap Years Properly
Be aware of leap years when calculating annual periods. Excel correctly handles leap years in its date system (serial number 60 is February 29, 1900, even though 1900 wasn't actually a leap year).
-
Document Your Holiday Lists
Maintain a separate worksheet with all holidays and clear documentation about:
- Which country/region they apply to
- Whether they're fixed or floating dates
- The source of the holiday data
-
Use Named Ranges
Create named ranges for frequently used date ranges (like fiscal years or holiday lists) to make formulas more readable and easier to maintain.
-
Validate Date Inputs
Implement data validation to:
- Ensure dates fall within expected ranges
- Prevent end dates before start dates
- Flag potentially incorrect dates (like future dates in historical reports)
-
Consider Time Zones
For international applications, be explicit about time zones. Either:
- Convert all dates to UTC
- Store time zone information separately
- Use the same time zone consistently throughout
-
Test Edge Cases
Always test your date calculations with:
- Dates spanning year boundaries
- Leap day (February 29)
- Dates at the limits of Excel's date system (1900-9999)
- Weekend and holiday combinations
Excel Date Calculation Limitations and Workarounds
-
Two-Digit Year Interpretation
Excel interprets two-digit years (like "23") differently based on your system settings. To avoid ambiguity, always use four-digit years (2023 instead of 23).
-
1900 Leap Year Bug
Excel incorrectly treats 1900 as a leap year (February 29, 1900 exists in Excel but didn't in reality). For historical calculations involving 1900, you may need manual adjustments.
-
Date Limits
Excel's date system only works with dates from January 1, 1900 to December 31, 9999. For dates outside this range, you'll need alternative solutions.
-
Time Zone Support
Excel has no native time zone support. For time zone conversions, you'll need to:
- Use UTC as a standard
- Create conversion tables
- Implement custom VBA functions
-
Floating Holidays
Holidays like "third Monday in January" (MLK Day in US) require complex formulas. Consider creating a holiday calculation worksheet or using VBA for these.
Alternative Tools and Methods
While Excel is powerful for date calculations, consider these alternatives for specific needs:
-
Google Sheets
Offers similar functions with some advantages:
- Better collaboration features
- Native web accessibility
- GOOGLEFINANCE function for market date calculations
Key Difference: Google Sheets uses a different date serial system (counts days from December 30, 1899).
-
Python with Pandas
For large-scale date calculations or automation:
import pandas as pd from datetime import datetime start = datetime(2023, 1, 1) end = datetime(2023, 12, 31) days = (end - start).days business_days = pd.bdate_range(start, end).sizeAdvantages:
- Handles very large datasets
- More flexible holiday definitions
- Better time zone support
-
JavaScript Date Object
For web applications:
const start = new Date('2023-01-01'); const end = new Date('2023-12-31'); const days = (end - start) / (1000 * 60 * 60 * 24);Advantages:
- Native browser support
- Good for interactive calculators
- Extensive libraries available (Moment.js, date-fns)
-
SQL Date Functions
For database applications:
-- MySQL SELECT DATEDIFF('2023-12-31', '2023-01-01') AS days_difference; -- SQL Server SELECT DATEDIFF(day, '2023-01-01', '2023-12-31') AS days_difference;Advantages:
- Optimized for large datasets
- Integrated with database operations
- Consistent server-side processing
Learning Resources and Further Reading
To deepen your understanding of Excel date calculations, explore these authoritative resources:
-
Official Microsoft Documentation
- Microsoft Office Support - Comprehensive reference for all Excel functions
- Excel VBA Documentation - For creating custom date functions
-
Educational Institutions
- MIT OpenCourseWare - Advanced spreadsheet modeling courses
- Coursera Excel Courses - Structured learning paths for Excel mastery
-
Government Resources
- NIST Time and Frequency Division - Official time standards and date systems
- UK Government Bank Holidays - Official UK holiday dates
-
Professional Organizations
- Project Management Institute - Standards for project scheduling
- Institute of Management Accountants - Financial date calculation standards
Build a reusable Excel template with:
- Pre-defined named ranges for common date calculations
- A holiday worksheet with formulas for floating holidays
- Data validation for all inputs
- Conditional formatting to highlight potential errors
- Documentation worksheet explaining all formulas
This will save you hours on future projects and ensure consistency across your work.
Frequently Asked Questions
-
Why does Excel show ###### instead of my date?
This typically means the column isn't wide enough to display the entire date. Either:
- Widen the column
- Change to a shorter date format (like "mm/dd/yyyy" instead of "Monday, January 01, 2023")
-
How do I calculate someone's age in Excel?
Use DATEDIF with three separate calculations:
=DATEDIF(birth_date, TODAY(), "y") & " years, " & DATEDIF(birth_date, TODAY(), "ym") & " months, " & DATEDIF(birth_date, TODAY(), "md") & " days" -
Can I calculate the number of weeks between dates?
Yes, divide the day count by 7:
=DAYS(end_date, start_date)/7For whole weeks only:
=FLOOR(DAYS(end_date, start_date)/7, 1) -
How do I handle dates before 1900 in Excel?
Excel's date system doesn't support dates before 1900. Options include:
- Store as text and create custom calculation functions
- Use a different tool for historical date calculations
- Implement a Julian date system for astronomical calculations
-
Why is my NETWORKDAYS calculation off by one day?
This usually happens when:
- The end date falls on a weekend or holiday
- You're including the start date in your count (when you shouldn't) or vice versa
- There's a time component to your dates affecting the calculation
Solution: Use
=NETWORKDAYS(start_date, end_date+1)if you want to include the end date. -
How do I calculate the number of months between dates?
Use DATEDIF with "m" unit:
=DATEDIF(start_date, end_date, "m")For complete months only:
=DATEDIF(start_date, end_date, "y")*12 + DATEDIF(start_date, end_date, "ym") -
Can I calculate business hours between dates?
Yes, but it requires more complex formulas. For 9-5 workdays:
=NETWORKDAYS(start, end) * 8 + (MIN(END_HOUR, MOD(end, 1)) - MAX(START_HOUR, MOD(start, 1))) * 24Where START_HOUR = 9/24 and END_HOUR = 17/24
Conclusion and Final Recommendations
Mastering date calculations in Excel opens up powerful possibilities for data analysis, project management, financial modeling, and business intelligence. Here are our final recommendations:
-
Start with the basics
Master simple subtraction and the DATEDIF function before moving to more complex calculations.
-
Build a holiday reference library
Create comprehensive holiday lists for all countries/regions you work with, including both fixed and floating holidays.
-
Document your work
Always document:
- The purpose of each date calculation
- Any assumptions made (like which days are weekends)
- The source of holiday data
- Any manual adjustments made
-
Validate your results
Cross-check important calculations with:
- Manual calculations for sample dates
- Alternative methods (like simple subtraction vs. DATEDIF)
- External date calculators
-
Automate repetitive tasks
For calculations you perform regularly:
- Create Excel templates
- Develop custom VBA functions
- Build Power Query transformations
-
Stay updated
Excel's date functions occasionally receive updates. Follow:
- The Microsoft Excel Blog for new features
- Excel MVP blogs for advanced techniques
- Relevant industry standards for your field
By applying the techniques in this guide, you'll be able to handle virtually any date calculation challenge in Excel with confidence and precision. Remember that date calculations often have real-world consequences (like payroll processing or contract deadlines), so always double-check your work and consider edge cases in your implementations.