在日历中,如果给定日期,问题主要基于查找星期几。例如,我们可能会被要求找出 1981 年 2 月 2 日这一天。
- 从日期中查找日期是基于计算奇数天数。奇数天是指比完整周数多的天数。例如,
非闰年的天数 = 365
365 模 7 = 1
所以,非闰年奇数天数 = 1 - 闰年的天数 = 366
=> 闰年奇数天数 = 366 mod 7 = 2 - 100 年的奇数天数(76 个非闰年 + 24 个闰年)= [(76 x 1) + (24 x 2)] mod 7 = (76 + 48) mod 7 = 124 mod 7 = 5 天
- 200 年奇数天数 = (2 x 100 年奇数天数) mod 7 = 10 mod 7 = 3
- 300 年奇数天数 = (3 x 5) mod 7 = 1
- 400 年奇数天数 = (4 x 5 + 1) mod 7 = 21 mod 7 = 0
请注意,这里我们额外增加了 1 天,因为第 400 年本身就是闰年。 - 要检查非百年年份是否为闰年,我们将其除以 4。如果余数为 0,则该年份为闰年。例如,2016 mod 4 = 0。因此,我们可以安全地推断出 2016 年是闰年。
- 要检查百年年份是否为闰年,我们将其除以 400。如果余数为 0,则该年份为闰年。例如,1700 mod 400 = 100。所以,这不是闰年。但是 1600 mod 400 = 0。因此,我们可以安全地推断 1600 是闰年。
- 奇数天数 = 0,天数 = 星期日
奇数天数 = 1,天数 = 星期一
奇数天数 = 2,天数 = 星期二
奇数天数 = 3,天数 = 星期三
奇数天数 = 4,天数 = 星期四
奇数天数 = 5,天数 = 星期五
奇数天数 = 6,天数 = 星期六