日期技巧(y总yyds)
作者:
码上成功
,
2024-03-11 22:51:39
,
所有人可见
,
阅读 36
日期技巧(y总yyds)
const int mouths[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int is_leap(int year)//判断是否闰年
{
if(year%4==0&&year%100||year%400==0)
return 1;
return 0;
}
int get_days(int y,int m)//得到某年某月的天数
{
if(m==2) return 28+is_leap(y);
return mouths[m];
}
void get_nextday(int &y,int &m,int &d) //得到下一天
{
d++;
if(d>get_days(y,m)
{
d=1;
m++;
if(m>12)
{
m=1;
y++;
if(y>9999) y=0;
}
}
}
int calc(int y,int m,int d)//得到从1年1月1日到某年某月某日的天数
{
int res=0;
for(int i=1;i<y;i++)
res+=365+is_leap(i);
for(int i=1;i<m;i++)
res+=get_days(y,i);
res+=d;
return res;
}
bool check(int y,int m,int d) //判断y年m月d日,这个如期是否合法
{
if(!m||!d||m<1||m>12) return false;
if(m!=2&&d>mouths[m]) return false;
if(m==2)
{
if(d>28+is_leap(y) return false;
}
return ture;
}