
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find Number of Days Between Two Given Dates in C++
In this problem, we are given two arrays date1[] and date2 consisting of 3 integers which denote the DD-MM-YYYY of daes. Our task is to find the number of days between two given dates.
Let’s take an example to understand the problem,
Input
date1[] = {13, 3, 2021}, date2[] = {24, 5, 2023}
Output
802
Explanation
The difference is 2 years , 2 months (3 - 5) and 11 days.
2*356 + (30 + 31) + 11 = 802
Solution Approach
A simple solution to the problem is by looping, starting from the start date date1 to date2 counting the number of days. And returning the value. This approach is ok, but a more efficient approach can be there.
Efficient Approach
A more efficient approach to the problem is by counting the total number of days till both the dates date1[] and date2[]. And then the absolute difference between both gives the result.
To count the number of days till both date1[] from 01/01/0000.
YEAR
Number of days till the first day of the year date1[2]
Number of days = 365*(years) + no. of leap year
MONTH
For a number of days till the 1st day of the month. Count from month array.
Number of days = monthDays[date[1]].
monthDays will store the total number of days till the 1st date of the month.
DATE
Number of days.
Sum of all these gives the count of days till date date1[]. The difference between the counts is the result.
Program to illustrate the working of our solution,
Example
#include <iostream> #include <math.h> using namespace std; const int monthDays[12] = { 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }; int countLeapYearDays(int d[]){ int years = d[2]; if (d[1] <= 2) years--; return ( (years / 4) - (years / 100) + (years / 400) ); } int countNoOfDays(int date1[], int date2[]){ long int dayCount1 = (date1[2] * 365); dayCount1 += monthDays[date1[1]]; dayCount1 += date1[0]; dayCount1 += countLeapYearDays(date1); long int dayCount2 = (date2[2] * 365); dayCount2 += monthDays[date2[1]]; dayCount2 += date2[0]; dayCount2 += countLeapYearDays(date2); return ( abs(dayCount1 - dayCount2) ); } int main(){ int date1[3] = {13, 3, 2021}; int date2[3] = {24, 5, 2023}; cout<<"The number of days between two dates is "<<countNoOfDays(date1, date2); return 0; }
Output
The number of days between two dates is 802