This question is very basic and confusing for beginners. Calculate the days between two dates is bit easy if you think deeply.
Calculating Days : Algorithm
If day2 - day1 <= -1 : days = daysOfMonth(month1)-day1+day2; Else: days = day2-day1;
Calculating Months : Algorithm:
If day2 - day1 <= -1: If month2 - month1 <= -1: months = 12+month2-month1-1; Else: months = month2-month1-1; Else: If month2 - month1 <= -1: months = 12+month2-month1; else: months = month2-month1;
Calculating Years : Algorithm
If month2 - month1 <= -1: years = year2-year1-1; Else: years = year2-year1;
Source Code
/*
[][][]
[][][]
[][][]
[][][] TerminalCoders.Blogspot.de
[][][]
[][][]
[][][]
*/
#include <iostream>
using namespace std;
class date
{
public:
int day, month, year;
void read()
{
cout<<"Enter date: ";
cin>>day>>month>>year;
}
date operator -(date);
int daysOf(int m, int y)
{
int days=0;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
{
days=31;
}
else if(m==2 && y%4==0 && !(y % 100 == 0))
{
days = 29;
}
else if(m==2)
{
days = 28;
}
else
{
days = 30;
}
return days;
}
};
date date::operator -(date d)
{
date df;
int days = daysOf(month, year);
df.day = ((-1>=d.day-day)?days-day+d.day:d.day-day);
df.month = ((-1>=d.day-day)?(-1>=d.month-month?12+d.month-month-1:d.month-month-1):(-1>=d.month-month?12+d.month-month:d.month-month));
df.year = ((-1>=d.month-month)?d.year-year-1:d.year-year);
return df;
}
int main()
{
date d1, d2, d3;
d1.read();
d2.read();
d3 = d1 - d2;
cout<<"Days between are: "<<d3.day<<" Days : "<<d3.month<<" Months : "<<d3.year<<" Year";
cin.get();
return 0;
}
