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

如何获取以当月1日为0基准的星期对应整数值

自定义月份首周星期计数实现方案

原代码的核心错误在于判断逻辑不合理:weekday() 方法的返回值范围固定为0(周一)到6(周日),永远满足departure_date.weekday() <7的条件,因此else分支永远不会触发,自然无法得到预期结果。

实现逻辑

  • 对每个目标日期,先获取其所在月份的1号日期对象
  • 计算目标日期和当月1号的间隔天数:间隔小于7的属于当月第一周,直接用间隔天数作为星期计数值(刚好满足当月1号为0的要求)
  • 间隔大于等于7的属于当月非首周,直接使用原生weekday()方法的返回值即可

完整实现代码

import datetime
from datetime import date

for day in range(1, 365):
    departure_date = date.today() + datetime.timedelta(days=day)
    # 获取当前日期所属月份的1号
    first_day_of_month = departure_date.replace(day=1)
    # 计算当前日期和当月1号的间隔天数
    delta_from_first = (departure_date - first_day_of_month).days
    # 按规则计算星期计数值
    if delta_from_first < 7:
        # 首周直接用间隔天数作为计数,1号对应0
        day_of_week = delta_from_first
    else:
        # 非首周使用默认周一=0、周日=6的计数规则
        day_of_week = departure_date.weekday()

内容的提问来源于stack exchange,提问作者tKc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:27:03