C语言 万年历中 星期差的计算问题

2024年11月20日 01:21
有1个网友回答
网友(1):

  这个星期差指的是每个月的1日的星期几与这年1月1日星期几间的差,不是跨年计算的,是同一年的月份的第1天的星期几和1月1日的差。

程序里有:
case 5: dm=1+m2; month=31; break;

意思就是说如果1月1日是星期六,那么同年5月1日就是星期六+(1+m2)。
如果是闰年,m2=1,否则m2=0。
2000年是闰年,所以2000年5月1日就是 星期六+(1+1)=星期一。
每月第n日就是第1日的(星期几+(n-1))%7的值了:
所以,5月4日就是 星期(六+(1+1)+(4-1))%7=4,星期四。