Nhập vào 2 ngày:

– Tính số ngày giữa 2 mốc thời gian

– Tính số  ngày, tháng, năm giữa 2 mốc

#include <iostream.h>
#include <conio.h>

class Date {
int day, mon, year;
public:
Date(){
day=1;
mon=1;
year=2000;}

Date(int d, int m, int y){
day=d;
mon=m;
year=y;}

Date operator / (const Date &);
int operator – (Date&);
long songay();
void in();
void nhap();
friend ostream & operator << (ostream &out, Date);
friend istream & operator >> (istream & in, Date&);
int layngay() { return day;}
int laythang() { return mon;}
int laynam() { return year;}
};

int Date::operator – (Date &d) {
return songay() – d.songay();
}

long Date::songay() {
long namNgay, ngayNhuan, thangNgay;
long total;
int thang[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
namNgay = ((long)year – 1)*365;
ngayNhuan = (year-1)/4;
thangNgay = 0;
for (int i=0; i<mon; i++) {
if (i==2) {
if (year % 4 == 0)
thangNgay += 29;
else
thangNgay += 28;
}
else
thangNgay += thang[i];
}
total = namNgay + ngayNhuan + thangNgay + (long)day;
return total;
}

Date Date::operator / (const Date &d) {
Date kq, d1, d2;
int dayInMon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
d2 = *this;
d1 = d;
kq.day = d2.day – d1.day;
if (d2.day < d1.day) {
if ((d1.mon == 2) && (d1.year % 4 == 0))
dayInMon[1] = 29;
kq.day = dayInMon[d1.mon – 1] – d1.day + d2.day;
d2.mon–;
}
kq.mon = d2.mon – d1.mon;
if (d2.mon < d1.mon) {
kq.mon = (12 – d1.mon) + d2.mon;
d2.year–;
}
kq.year = d2.year – d1.year;
if (d2.year < d1.year) {
cout << “\nLoi: Ngay dau lon hon ngay cuoi”;
kq.day = kq.mon = kq.year = 0;
}
return kq;
}

ostream & operator << (ostream &out, Date d) {
out << d.day << “/” << d.mon << “/” << d.year;
return out;
}

istream & operator >> (istream &in, Date &d) {
cout << “Nhap ngay: “; in >> d.day;
cout << “Nhap thang: “; in >> d.mon;
cout << “Nhap nam: “; in >> d.year;
return in;
}

int main() {
Date d1, d2, d3;
cout << “Nhap d1: \n”;
cin >> d1;
cout << “\n\nNhap d2: \n”;
cin >> d2;
d3 = d2 / d1;
cout << “\nKhoang cach giua 2 moc: ” << d3;
cout << endl << “So ngay giua 2 moc: ” << d2 – d1;
cout << endl << “So ngay ke tu ngay dau tien trong lich: ” << d1.songay();
getch();
}