You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:47:22