Python实现获取某天是某个月中的第几周

巷口听风
巷口听风
发布时间:2026-10-12| 2人浏览过
原创

本文详解如何在Python中计算指定日期所属月份的第几周。利用内置datetime模块配合周次相减法,仅需几行代码即可准确返回目标结果。全文提供已适配Python 3的完整示例、运行验证数据及常见边界情况说明,适用于日常脚本编写与自动化日历处理。

目标与方法概述

在处理日历数据或生成排期报表时,经常需要判断某个月中的某一天具体是当月第几个自然周。Python标准库并未直接提供“月内周次”的计算接口,但可以通过格式化字符串获取年度周数,再通过首尾差值推算出相对该月的周次序号。该方法以周一作为每周起始日,逻辑清晰且依赖零外部第三方包,非常适合轻量级项目集成。

核心代码实现

以下函数接收年、月、日三个整数参数,返回该日期在当前月份对应的周数。代码已更新为Python 3标准语法:

import datetime

def get_week_of_month(year: int, month: int, day: int) -> int:
    """
    计算指定日期属于当月第几周(以周一为一周开始)
    """
    # 获取目标日期与当月1号的年度周次编号(%W范围00-53)
    target_week = int(datetime.datetime(year, month, day).strftime("%W"))
    start_week = int(datetime.datetime(year, month, 1).strftime("%W"))
    
    # 两者相减后加1即为当月周次
    return target_week - start_week + 1

if __name__ == '__main__':
    print(get_week_of_month(2015, 1, 4))   # 输出:1
    print(get_week_of_month(2015, 1, 5))   # 输出:1
    print(get_week_of_month(2015, 1, 15))  # 输出:3
    print(get_week_of_month(2015, 1, 18))  # 输出:3

代码说明:strftime("%W") 会返回当月所在年份的ISO风格周数(00起算),通过同月首尾周数做差并补正1,即可映射到当前月份的相对周序。此逻辑避免了繁琐的条件分支判断,执行效率较高。

运行验证与结果说明

在Python 3.6及以上环境中执行上述脚本,控制台将依次打印以下数值:

  • 2015年1月4日 → 1(当月第1周)
  • 2015年1月5日 → 1(当月第1周)
  • 2015年1月15日 → 3(当月第3周)
  • 2015年1月18日 → 3(当月第3周)

测试结果表明,当月份第一天并非星期一时,%W 可能会将该月上旬归入上一年的末尾周次(显示为00)。此时首尾同属00区间的日期相减结果为0,加1后正确落在第1周区间,符合常规日历认知。

使用注意事项与排错

  1. 日期越界检查:调用函数前建议先用datetime.date(year, month, day)验证参数合法性,避免传入非闰年2月29日等非法组合引发异常。
  2. 区域习惯差异:部分业务需以周日为周首日,可改用%U指令替代%W,其余计算逻辑保持不变。
  3. 跨月边界场景:本方法严格限定在同月内部运算。若需处理跨年或跨月连续排期,应结合calendar.isoweekdate()进行全局周次对齐后再做分段映射。

总结

以上就是利用Python内置datetime模块实现获取指定日期是当月第几周的详细内容,更多关于Python日期处理与时间计算的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。