说明]
本法具有占用
ROM
小,运算速快的特点,范围
2000
?à
2099
共
100
年;
只要输入年月日便可直接得出相应的星期,一步到位!
算法]
1.
0
à
6
表示星期天到星期六
.
2.
平年有
365
天
,
闰年有
366
天
.
而一星期
7
天,
365 mod 7=1,365 mod 7=2,
那么,
N
年与(
N+1
)分别相差
+1
和
+
(
1+1
)天。
3.
已知
:2000.01.01
是星期六
.
4.
作一张数据表
:
要求这年
1
月
1
日是星期六且是非闰年
(
平年
—
选用
2005
年正好
)
给出每月的
1
日星期数
:
DB 0FFH, 06H, 02H, 02H, 05H, 00H, 03H, 05H, 01H, 04H, 06H, 02H, 04H;
(first data is useless)
5
.比如求
Y1Y0
年
M
月
D
日的星期
.
6
.那么根据
M
可查得相对的
M
月
1
日的星期数,为
X .
7
.所以
M
月
D
日为星期
(X+(D-1))MOD 7
.
8。
由于从
2000
年
M
月
D
日到
Y1Y0
年
M
月
D
日所经历的闰二月数共为
: (Y1Y0-2000+3)/4+(Y1Y0-2000)+
(Y1Y0年是闰年且M>2)
.
所以整个公式为
:
这天是
星期
[(X+(D-1))+ (Y1Y0-2000+3)/4+(Y1Y0-2000)+Y1Y0
年是闰年且
M
月
>2]
MOD 7