如何用Python编写程序判断四位年份1月1日的星期编号(0=周日,6=周六)
Python实现获取指定年份1月1日的星期编号
嘿,这个需求用Python自带的标准库就能轻松搞定,不用额外装任何依赖包,我给你两种实用的实现方式,按需选就行:
方法一:使用datetime标准库(推荐)
这是最直观、最不容易出错的方式,利用Python内置的datetime模块处理日期逻辑:
import datetime def get_jan1_weekday(year): # 先做参数校验,确保输入是四位整数年份 if not isinstance(year, int) or year < 1000 or year > 9999: raise ValueError("请输入有效的四位整数年份哦") # 创建目标年份1月1日的日期对象 jan_first = datetime.date(year, 1, 1) # 转换为需求的星期编号:0=周日,1-5=周一到周五,6=周六 # 注:datetime的weekday()方法返回0=周一,6=周日,所以做个简单转换 return (jan_first.weekday() + 1) % 7
使用示例:
print(get_jan1_weekday(2023)) # 输出0,因为2023年1月1日是周日 print(get_jan1_weekday(2024)) # 输出1,2024年1月1日是周一 print(get_jan1_weekday(2025)) # 输出3,2025年1月1日是周三
方法二:使用蔡勒公式(纯计算方式)
如果你不想依赖标准库,也可以用蔡勒公式直接通过数学计算得到结果,不过需要注意公式适配(针对格里高利历,四位年份基本都适用):
def get_jan1_weekday(year): if not isinstance(year, int) or year < 1000 or year > 9999: raise ValueError("请输入有效的四位整数年份哦") # 蔡勒公式适配1月的情况:把1月当作上一年的13月 y = year - 1 m = 13 q = 1 # 计算蔡勒公式的各项 K = y % 100 J = y // 100 h = (q + (13 * (m + 1)) // 5 + K + K // 4 + J // 4 + 5 * J) % 7 # 转换为需求的编号:蔡勒公式h=0=周六,1=周日,2=周一...6=周五 # 调整为用户需要的映射:0=周日,1-5=周一到周五,6=周六 return h - 1 if h != 0 else 6
这个方法完全靠数学计算,不需要任何库,适合一些特殊场景,但可读性不如第一种方法,所以更推荐第一种。
内容的提问来源于stack exchange,提问作者Tshilidzi Mphelo
相关产品推荐
相关产品推荐

