|
|
本帖最后由 wang_966 于 2015-2-20 07:02 编辑
心算星期几 -- 王氏口诀
**作者:本口诀及公式由 (笔名)王骏( Mike Wang )设计提供。
**网志:http://blog.sina.com.cn/tools241
**欢迎免费转载或做为教材,欢迎会华语有兴趣的人都来练习。
1.本公式适用于 "1900/03/01- 2100/02/28" ,
此期间4年一润(2月有29天), 相隔28年的同一天其 "星期几" 也会相同,
因此可以将年份往前或往后移动28年的倍数以方便计算,
为方便计算,请选择合适的值代入。
Y= 西元年份-2008+28的倍数,
如果月份为 "1月或2月", 则Y还要再减去一年. 口诀中以 "(去年)" 提醒。
2.十二个月的 "M月对照值" 口诀( 请记起来随时可用 ):
"(去年)1上(榜);(去年)2留(级);扇舞试衣舞扇;六六(大顺);去移巴士;
久邻邀您儿,邀邀我,邀儿您(去听演唱会)"。
M01月=3 ==> " 1,3" 记成 "(去年)1上(榜);" ;
M02月=6 ==> " 2,6" 记成 "(去年)2留(级);" ;
M03月=5 ==> " 3,5" 记成 "扇舞";
M04月=1 ==> " 4,1" 记成 "试衣";
M05月=3 ==> " 5,3" 记成 "舞扇";
M06月=6 ==> " 6,6" 记成 "六六(大顺)";
M07月=1 ==> " 7,1" 记成 "去移";
M08月=4 ==> " 8,4" 记成 "巴士;";
M09月=0 ==> " 9,0" 记成 "久邻(很久的邻居)";
M10月=2 ==> "10,2" 记成 "邀您儿,";
M11月=5 ==> "11,5" 记成 "邀邀我,";
M12月=0 ==> "12,0" 记成 "邀儿您(去听演唱会)"。
3.星期几Week = (Y+ [Y/4]取整数 + M月对照值 + D日 ) 除以 7 的余数
例: 1900/09/08(光绪26年的9月8日) 中秋是星期六
Y= 1900+(28 x 4 - 2008) = 1900 + 112 - 2008 = 2012 - 2008 = 4,
w = ( 4 + [4/4] + (M在九月的对照值)0 + 8日 ) = 13
week = 13 % 7 = 6 (星期六)
例: 2010/01/01 是星期几?
Y = 2010+(28 x 0 - 2008) -1(如果月份为1月或2月则Y要再减一年)
= 2010-2008 -1 = 1
w = ( 1 + [1/4]) + 3 + 1 = 1 + 0 + (M在一月的对照值)3 + 1 = 5
week = 5 % 7 = 5 (星期五)
例: 2010/02/13 除夕是星期几?
Y = 2010 - 2008 -1(如果月份为1月或2月则Y要再减一年) = 1
w = ( 1 + [1/4]) + 6 + 13 = 1 + 0 + (M在二月的对照值)6 + 13 = 20
week = 20 % 7 = 6 (星期六)
例: 2010/09/22 中秋是星期几?
Y = 2010 - 2008 = 2
w = ( 2 + [2/4]) + 0 + 22 = 2 + 0 + (M在九月的对照值)0 + 22 = 24
week = 24 % 7 = 3 (星期三)
例: 2011/01/01 是星期几?
Y = 2011+(28x0-2008) -1(如果月份为1月或2月则Y要再减一年)
= 2011-2008 -1 = 2
w = ( 2 + [2/4]) + 3 + 1 = 2 + 0 + 3 + 1 = 6
week = 6 % 7 = 6 (星期六)
例: 2011/02/02 除夕是星期几?
Y = 2011-2008 -1(如果月份为1月或2月则Y要再减一年) = 2
w = ( 2 + [2/4]) + 6 + 2 = 2 + 0 + 6 + 2 = 10
week = 10 % 7 = 3 (星期三)
例: 2011/09/12 中秋是星期几?
Y = 2011-2008 = 3
w = ( 3 + [3/4]) + 0 + 12 = 3 + 0 + 0 + 12 = 15
week = 15 % 7 = 1 (星期一)
** 高斯符号:数学王子 "高斯(C. Gauss 1777-1855)" 提出 "[取整数]" 的符号,
例 [5.03] = 5 ;若为负数则小数以下直接进位, 例 [-5.03] = -6。
** 润年口诀:"四年一润,百年不润,四百年再润"。
因为地球环绕太阳一周约为 "365.2422天",
四年一润(例2004,2008,2012,2016);百年不润(例1800,1900,2100,2200,
2300,2500);四百年再润(例1600,2000,2400)。 影响星期几的变动值 :
365天 x 西元年份 + [西元/4] - [西元/100] + [西元/400]。
** 因1900年不是润年, 所以公式若要使用于1800/03/01至1900/02/28时 , 星期
几还要右调1天;若使用于2100/03/01至2200/02/28时,星期几还要左调1天。
** 有兴趣者或程式设计者请参考:在公元4年3月1日以前的润年是不规则的,
后来为修正累积的误差,将早期儒略历(Julian calendar)1582年10月4日的隔
天订为现行的公历历法格里历(Gregorian calendar)1582年10月15日;因
为英国是晚在1752年9月才改用公历,而此时误差已达11天,因此由美国
人设计的 Unix 系统中若执行 "cal 9 1752" 可查到1752年的9月份是做过修
正的,中间缺少了 11 天。1752/9/2 是星期三,隔天就是1752/9/14 星期四。
例: 1752/09/14 是星期几?
Y = 1752 +(28 x 10 - 2008) = 24
w = ( 24+ [24/4]) +(M在九月的对照值)0 + 14 = 24 + 6 + 0 + 14 = 44
week = 44 % 7 = 2 => 因1800年及1900年不是润年,向右调2天为星期四。
..................................................................................................................
备注:作者乃数学系毕业, 您可以 "免费"转载上列的内容,
如果不是"g-o-v-e-r-n-m-e-n-t单位或教育单位或编制成教材",
请包含:作者笔名,"欢迎免费转载"字样,部落格网址。
..................................................................................................................
以下仅供参考:
* 各国施行公历的日期:
1582/10/15 (义大利,西班牙,葡萄牙...)
1582/12/20 (法国)
1700/03/01 (丹麦,挪威)
1752/09/14 (英国,美国)
1918/02/14 (俄国)
1923/03/01 (希腊) |
|