给定一个日期: y y y年 m m m月 d d d日,求这天是星期几
1582年10月5日及之后的日期:
w = ( [ c 4 ] − 2 c + y + [ y 4 ] + [ 13 ∗ ( m + 1 ) 5 ] + d − 1 ) M O D 7 w=([\frac c 4] - 2c + y + [\frac y 4] + [\frac {13*(m+1)} 5] + d - 1)\ MOD \ 7 w=([4c]−2c+y+[4y]+[513∗(m+1)]+d−1) MOD 7
1582年10月4日及之前的日期:
w = ( [ c 4 ] − 2 c + y + [ y 4 ] + [ 13 ∗ ( m + 1 ) 5 ] + d − 1 ) M O D 7 w=([\frac c 4] - 2c + y + [\frac y 4] + [\frac {13*(m+1)} 5] + d - 1)\ MOD \ 7 w=([4c]−2c+y+[4y]+[513∗(m+1)]+d−1) MOD 7
符号的意义:
- w : w: w:星期几
- c : c: c:世纪数减一,也就是年份的前两位
- y : y: y:年份的后两位
- m : m: m:月份, m m m 的取值范围是 3 至 14,因为某年的 1、2 月要看作上一年的 13、14月,比如 2019 年的 1 月 1 日要看作 2018 年的 13 月 1 日来计算
- d : d: d:日数
- [ ] : [\ ]: [ ]:取整
- m o d : mod: mod:取余
例子: 2020年7月26日
w
=
(
[
20
4
]
−
2
∗
20
+
20
+
[
20
4
]
+
[
13
∗
(
7
+
1
)
5
]
+
26
−
1
)
m
o
d
7
=
(
5
−
40
+
20
+
5
+
20
+
26
−
1
)
m
o
d
7
=
0
w=([\frac {20} 4]-2*20 + 20 + [\frac {20} 4] + [\frac {13*(7+1)} 5] + 26 -1)\ mod\ 7=(5-40+20+5+20+26-1)\ mod\ 7=0
w=([420]−2∗20+20+[420]+[513∗(7+1)]+26−1) mod 7=(5−40+20+5+20+26−1) mod 7=0
0代表周日