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; }