// C++ program two find number of days between two given dates
#include<iostream>
using
namespace
std;
// A date has day 'd', month 'm' and year 'y'
struct
Date
{
int
d, m, y;
};
// To store number of days in all months from January to Dec.
const
int
monthDays[12] = {31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31};
// This function counts number of leap years before the
// given date
int
countLeapYears(Date d)
{
int
years = d.y;
// Check if the current year needs to be considered
// for the count of leap years or not
if
(d.m <= 2)
years--;
// An year is a leap year if it is a multiple of 4,
// multiple of 400 and not a multiple of 100.
return
years / 4 - years / 100 + years / 400;
}
// This function returns number of days between two given
// dates
int
getDifference(Date dt1, Date dt2)
{
// COUNT TOTAL NUMBER OF DAYS BEFORE FIRST DATE 'dt1'
// initialize count using years and day
long
int
n1 = dt1.y*365 + dt1.d;
// Add days for months in given date
for
(
int
i=0; i<dt1.m - 1; i++)
n1 += monthDays[i];
// Since every leap year is of 366 days,
// Add a day for every leap year
n1 += countLeapYears(dt1);
// SIMILARLY, COUNT TOTAL NUMBER OF DAYS BEFORE 'dt2'
long
int
n2 = dt2.y*365 + dt2.d;
for
(
int
i=0; i<dt2.m - 1; i++)
n2 += monthDays[i];
n2 += countLeapYears(dt2);
// return difference between two counts
return
(n2 - n1);
}
// Driver program
int
main()
{
Date dt1 = {1, 2, 2000};
Date dt2 = {1, 2, 2004};
cout <<
"Difference between two dates is "
<< getDifference(dt1, dt2);
return
0;
}