📄
字号:
#include<iostream.h>
int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
class Date
{
int year,month,day;
int leap(int);
int dton(Date &);
Date ntod(int);
public:
Date(){}
Date(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
/* void setday(int d)
{day=d;}
void setmonth(int m)
{month=m;}
void setyear(int y)
{year=y;}
int getday()
{return day;}
int getmonth()
{return month;}
int getyear()
{return year;}*/
Date operator+(int days)
{
static Date date;
int number=dton(*this)+days;
date=ntod(number);
return date;
}
Date operator-(int days)
{
static Date date;
int number=dton(*this);
number-=days;
date=ntod(number);
return date;
}
int operator -(Date &b)
{
int days=dton(*this)-dton(b)-1;
return days;
}
void disp()
{
cout<<year<<"."<<month<<"."<<day<<endl;
}
};
int Date::leap(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else
return 0;
}
int Date::dton(Date &d)
{
int y,m,days=0;
for(y=1;y<d.year;y++)
{
if(leap(d.year))
days+=366;
else
days+=365;
}
for(m=1;m<d.month;m++)
{
if(leap(d.year))
days+=day_tab[1][m];
else
days+=day_tab[0][m];
}
days+=d.day;
return (days+1);
}
Date Date::ntod(int n)
{
int y=1,m=1,d,rest=n,lp;
while(1)
{
if(leap(y))
{
if(rest<=366)
break;
else
rest-=366;
}
else
{
if(rest<=365)
break;
else
rest-=365;
}
y++;
}
y--;
lp=leap(y);
while(1)
{
if(lp)
{
if(rest>day_tab[1][m-1])
rest-=day_tab[1][m-1];
else
break;
}
else
{
if(rest>day_tab[0][m-1])
rest-=day_tab[0][m-1];
else
break;
}
m++;
}
d=rest;
return Date(y,m,d);
}
void main()
{
Date now(2003,2,14);
Date then(2003,2,12);
cout<<"now:";
now.disp();
cout<<"then:";
then.disp();
cout<<"相差天数:"<<(now-then)<<endl;
Date d1=now+100;
Date d2=now-100;
cout<<"now+100: ";
d1.disp();
cout<<"now-100: ";
d2.disp();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -