如何根据日期心算星期几

328 阅读2分钟

可以用表格法,比如说 2024 年的操作数如下

月份1月2月3月4月5月6月7月8月9月10月11月12月
操作数734725736146

比如说情人节是星期几? 214 号 可以这么算

2 月的操作数是 3,(14 + 3)/7 取余数为3, 那就是星期三,你能口算出来,女朋友肯定会很开心

可见,只要心里熟记 73472573614612 个数字,就速算出 2024 年的几月几日是星期几,是不是很酷?

那么这 12 个数字是从哪儿来的呢?它们就是分别所对应的月份的上一个月的最后一天的星期数,如下表所示

2023-12-312024-1-312024-2-292024-3-312024-4-302024-5-312024-6-302024-7-312024-8-312024-9-302024-10-312024-11-30
星期7星期3星期4星期7星期2星期5星期7星期3星期6星期1星期4星期6

下面附赠生成表格的 Python 脚本

import calendar
from datetime import datetime

week = ["1","2","3","4","5","6","7"]

year = 2024

first_row = ""
second_row = ""
third_row = ""

x, days = calendar.monthrange(year - 1, 12)
dt = datetime(year - 1, 12, days, 0, 0, 0)
first_row += f"|1月\t"
second_row += f"|---"
third_row += f"|{week[dt.weekday()]}\t"

for month in range(1,12):
    x, days = calendar.monthrange(year,month)
    dt = datetime(year, month, days, 0, 0, 0)
    first_row += f"|{month+1}月\t"
    second_row += f"|---"
    third_row += f"|{week[dt.weekday()]}\t"

print(f"{first_row}|")
print(f"{second_row}|")
print(f"{third_row}|")