计算星期几的公式就是把一个公历日期拆成日期、月份、年份、世纪四个代码,相加后除以7,只用余数对应星期。这个办法的依据是星期每7天循环一次。你只需要先处理1月和2月,再套用一行公式,最后查代码表,就能得到答案。日常使用里,这套流程可以手算,也可以编程,适合快速确定公历日期的星期。
一、主公式
```text
H = (D + INT(13 × (M + 1) / 5) + Y + INT(Y / 4) + INT(C / 4) + 5 × C) mod 7
```
说明:
- `INT` 表示取整,只保留整数部分。
- `mod 7` 表示除以7取余数。
- 算出的 `H` 是星期代码。
- 最后对照星期代码表读取结果。
二、变量表
| 变量 | 含义 | 写法 |
|---|---|---|
| D | 日期 | 当月是几日就写几 |
| M | 月份 | 1月、2月要调整后使用 |
| Y | 年份后两位 | 调整后年份除以100取余 |
| C | 世纪 | 调整后年份除以100取整 |
三、月份处理
公历日期里的3月到12月可以直接使用。
1月和2月需要按前一年的月份处理。
| 原月份 | 调整后写法 | 年份处理 |
|---|---|---|
| 1月 | M = 13 | 年份减1 |
| 2月 | M = 14 | 年份减1 |
| 3月 | M = 3 | 年份不变 |
| 4月 | M = 4 | 年份不变 |
| 5月 | M = 5 | 年份不变 |
| 6月 | M = 6 | 年份不变 |
| 7月 | M = 7 | 年份不变 |
| 8月 | M = 8 | 年份不变 |
| 9月 | M = 9 | 年份不变 |
| 10月 | M = 10 | 年份不变 |
| 11月 | M = 11 | 年份不变 |
| 12月 | M = 12 | 年份不变 |
四、操作清单
- 写下公历年、月、日。
- 如果是1月或2月,把年份减1,月份变成13或14。
- 用调整后的年份求 `Y` 和 `C`。
- 把 `D`、`M`、`Y`、`C` 代入公式。
- 算出 `H`。
- 查星期代码表。
五、星期代码表
| H | 星期 |
|---|---|
| 0 | 星期六 |
| 1 | 星期日 |
| 2 | 星期一 |
| 3 | 星期二 |
| 4 | 星期三 |
| 5 | 星期四 |
| 6 | 星期五 |
六、示例一:2024年2月14日
第一步:处理月份
2月当作前一年14月,所以:
```text
D = 14
M = 14
年份调整为 2023
```
第二步:求年份代码和世纪代码
```text
Y = 2023 mod 100 = 23
C = INT(2023 / 100) = 20
```
第三步:代入公式
```text
H = (14 + INT(13 × (14 + 1) / 5) + 23 + INT(23 / 4) + INT(20 / 4) + 5 × 20) mod 7
```
逐项计算:
```text
INT(13 × 15 / 5) = INT(195 / 5) = 39
INT(23 / 4) = 5
INT(20 / 4) = 5
5 × 20 = 100
```
合计:
```text
H = (14 + 39 + 23 + 5 + 5 + 100) mod 7
H = 186 mod 7
H = 4
```
查表:
```text
H = 4,对应星期三
```
所以,2024年2月14日是星期三。
七、示例二:2026年6月30日
第一步:处理月份
6月直接使用:
```text
D = 30
M = 6
Y = 26
C = 20
```
第二步:代入公式
```text
H = (30 + INT(13 × (6 + 1) / 5) + 26 + INT(26 / 4) + INT(20 / 4) + 5 × 20) mod 7
```
逐项计算:
```text
INT(13 × 7 / 5) = INT(91 / 5) = 18
INT(26 / 4) = 6
INT(20 / 4) = 5
5 × 20 = 100
```
合计:
```text
H = (30 + 18 + 26 + 6 + 5 + 100) mod 7
H = 185 mod 7
H = 3
```
查表:
```text
H = 3,对应星期二
```
所以,2026年6月30日是星期二。
八、日常使用建议
- 手算时,可以先把每个小项单独算出来。
- 编程时,只需要写取整、乘加、取余三步。
- 查表时,只需要记住结果代码和星期的对应关系。
- 如果日期是1月或2月,先做月份转换,再进入公式。
九、公式思路小结
计算星期几的公式的核心思路是把日期信息变成数字,然后利用7天循环做取余。
日期提供当月位置,月份代码提供月份偏移,年份和世纪代码提供长期循环偏移。
这些部分相加后,星期循环只关心余数,不关心完整总和。
【常见问题】
问题1:计算星期几的公式适合哪些日期?
回答1:计算星期几的公式适合公历日期。只要知道年、月、日,就可以用计算星期几的公式确定星期代码。
问题2:使用计算星期几的公式时,1月和2月怎样处理?
回答2:使用计算星期几的公式时,1月写成前一年13月,2月写成前一年14月。这样能让月份代码保持连续,计算星期几的公式也能稳定读取结果。
问题3:计算星期几的公式算出 H 后怎么读结果?
回答3:计算星期几的公式算出的 H 是星期代码,直接查星期代码表就能得到答案。计算星期几的公式的结果是 0 到 6 之间的整数。
问题4:计算星期几的公式能不能用于编程?
回答4:计算星期几的公式很适合编程。计算星期几的公式主要用到取整和取余,很多语言都可以直接实现。
问题5:想快速使用计算星期几的公式,最简路径是什么?
回答5:最简路径是先判断月份,再代入计算星期几的公式,最后查表。使用计算星期几的公式时,顺序固定:调整月份、拆出年份、求余数、读星期。
免责声明:本内容为通用计算方法说明,适用于公历日期的星期判断示例;实际使用时请以日历工具显示的日期和星期为准。
