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

求可返回月份内周数的Python代码(周起始为周一)

实现指定日期在当月的周数(周一为周起始)

可以利用Python内置的datetime模块实现该需求,核心思路是通过计算目标日期与当月第一天的天数差,结合当月第一天的星期数推导周数。以下是完整实现代码:

import datetime

def get_month_week_number(year: int, month: int, day: int) -> int:
    # 创建目标日期对象
    target_date = datetime.date(year, month, day)
    # 获取当月第一天
    first_day_of_month = datetime.date(year, month, 1)
    
    # weekday() 返回0(周一)到6(周日)的整数,匹配周起始要求
    first_day_weekday = first_day_of_month.weekday()
    # 计算目标日期与当月第一天的天数差
    days_diff = (target_date - first_day_of_month).days
    
    # 补全第一天到周一的间隔天数后,按7天为一周划分,加1转为从1开始的周数
    week_number = (days_diff + first_day_weekday) // 7 + 1
    return week_number

# 测试示例
if __name__ == "__main__":
    # 2022年11月2日,预期返回1
    print(get_month_week_number(2022, 11, 2))  # 输出: 1
    # 2022年11月7日(周一),预期返回2
    print(get_month_week_number(2022, 11, 7))  # 输出: 2
    # 2022年11月1日(周二),预期返回1
    print(get_month_week_number(2022, 11, 1))  # 输出: 1

代码说明

  • datetime.date.weekday():返回值0对应周一,6对应周日,完全契合“周一为周起始”的规则。
  • days_diff:获取目标日期与当月第一天的总天数间隔。
  • 周数计算逻辑:(days_diff + first_day_weekday)补全了当月第一天到本周一的间隔天数,使整个时间跨度可以按7天为单位划分,整除7得到0起始的周索引,加1后转为日常使用的1起始周数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:20:34