转:www.logmath.com/article/2008/08/day-month-to-weekday.html
在上小学时,有一位同学和我作过这样一个游戏:他让我随便说出当年的某一月某一日,他不用看日历就能很快、准确地说出这天是星期几。
我拿来了一本日历,与他试验了几次。果然他每次都说得很快也很准。我知道他不可能把一年三百六十五天每天星期几都背下来,所以他的本事引起了我很大的兴趣。
后来我知道了他的计算方法:他心里记住了十二个数字,这十二个数字分别对应于当年的十二个月。要计算当年的某月某日是星期几,只要用那日的日数加上那月所对应的数字,然后除以7,余几就是星期几,恰好除尽就是星期日。
我清楚地记得那年的十二个月所对应的数字依次是
1,4,4,0,2,5,0,3,6,1,4,6
碰巧,1991年的十二个月所对应的数字依次也是这十二个数字。下面就以1991年为例具体地谈一下这种方法。
我们先要把下表中的各数牢牢地记在心里:
1991年的月份 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
各月对应的数字 | 1 | 4 | 4 | 0 | 2 | 5 | 0 | 3 | 6 | 1 | 4 | 6 |
例如要计算1991年6月25日是星期几。我们心里想到6月份对应的数字是5,就用25加上5,得到30;再用30除以7,余2,则1991年6月25日是星期二。
再如,要计算1991年9月1日是星期几。9月对应的数字是6,1+6=7,7除以7没有余数,所以1991年9月1日是星期日。
可见,只要心里熟记144025036146这一串数字,就能算出1991年的几月几日是星期几。
144025036146这一串数字是从哪儿来的呢?它们就是分别所对应的月份的上一个月的最后一天的星期数。例如,1991年1月31日是星期四,所以1991年2月份对应的数字就是4。每月1日的星期数,当然是头一天(即上个月的最后一天)的星期数的基础上加上1;以后每过1天,星期数就增加工厂;7天一个周期(即一个星期),所以很容易想通这个方法。
为了找出1992年12个月份所对应的各个数字,也就只需记下1992年每个月份的上一个月的最后一天是星期几。利用年历容易查得下表:
1992年的月份 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
各月对应的数字 | 2 | 5 | 6 | 2 | 4 | 0 | 2 | 5 | 1 | 3 | 6 | 1 |
例如要计算1992年8月15日是星期几。我们查到1992年8月份对应的数字是5,15+5=20,20除以7余6,所以1992年8月15日是星期六。
平年每年有365天。365=52×7+1,即:平年每年有52个星期零1天。所以,如果连续两年都是平年,则第二年每月对应的数字就是在第一年对应月份对应的数字的基础上加上1。
闰年的2月有29天。闰年全年365天,是52个星期零两天。从闰年的3月份开始的连续12个月中,每个月对应的数字等于一年前同一月份对应的数字加上2。
例如,1992年是闰年。1992年3月至12月各月对应的数字都等于1991年对应月份的数字加上2。从1992年3月份到1993年2月份才满12个月,所以1993年1月和2月对应的数字也分别等于1992年1月和2月对应的数字加上2(逢7变0,逢8变1)。
1993年是平年。从1993年3月份开始,直到下一个闰年(1996年)的2月份,每个月所对应的数字都等于一年前同一月份所对应的数字加上1。
下表所列的是近几年每个月对应的数字:
月
年 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
1991年 | 1 | 4 | 4 | 0 | 2 | 5 | 0 | 3 | 6 | 1 | 4 | 6 |
1992年 | 2 | 5 | 6 | 2 | 4 | 0 | 2 | 5 | 1 | 3 | 6 | 1 |
1993年 | 4 | 0 | 0 | 3 | 5 | 1 | 3 | 6 | 2 | 4 | 0 | 2 |
1994年 | 5 | 1 | 1 | 4 | 6 | 2 | 4 | 0 | 3 | 5 | 1 | 3 |
1995年 | 6 | 2 | 2 | 5 | 0 | 3 | 5 | 1 | 4 | 6 | 2 | 4 |
1996年 | 0 | 3 | 4 | 0 | 2 | 5 | 0 | 3 | 6 | 1 | 4 | 6 |
1997年 | 2 | 5 | 5 | 1 | 3 | 6 | 1 | 4 | 0 | 2 | 5 | 0 |
1998年 | 3 | 6 | 6 | 2 | 4 | 0 | 2 | 5 | 1 | 3 | 6 | 1 |
每年记住一串(12个)数字就能心算出全年每一天是星期几,应该说是相当方便的。