目录
1 判断某年是否是闰年
日期类问题常常涉及对闰年的判断:年份是4的倍数的,一般都是闰年;但年份是整百数的,必须是400的倍数才是闰年。
bool run(int y){
return (y%100 && y%4 == 0)||(y%400==0);
}
有了闰年的判断方法,我们才可以进一步解决日期类问题。
2 求指定日期是星期几
第一种方法是死记硬背的公式(不大推荐这种方法,个人推荐第二种方法!!!)——基姆拉尔森计算公式:对于 y 年 m 月 d 日,有:
int fun(int y,int m,int d)
{
int w;
if(m<=2) m += 12,y--;
w = (y + y/4 + y/400 - y/100 + 2*m + 3*(m+1)/5 +d)%7;
return w;
}
// 其中,w的值为[0,6],分别对应星期一到星期日,即0表示星期一,6表示星期日。
第二种是一个比较好记忆、适用范围更广的方法:从公元1年1月1日,到给定日期,一共有多少天,然后总天数取模7即可。