首页 > 解决方案 > 我有一个对应于 2018 年第 1 周的 ISO 8601 周数(例如:201801)。pyth 中的最佳方法是什么

问题描述

我有一个 ISO 8601 周数,比如 201801 - 对应于 2018 年的第 1 周。

如何使用python提取一周内的日期?

标签: pythondatetime

解决方案


我会得到那一周的星期日,然后从那开始给 7 天。根据您希望在第 52 周发生的情况,您可能希望删除break

from datetime import datetime, timedelta

def days_from_weekstr(weekstr):
    sunday = datetime.strptime(weekstr + "-0", "%Y%W-%w")
    year = sunday.year
    for i in range(7):
        day = sunday + timedelta(1) * i
        if day.year != year:
            break
        yield day.date()

用法:

>>> list(days_from_weekstr("201801"))
[datetime.date(2018, 1, 7), datetime.date(2018, 1, 8), datetime.date(2018, 1, 9), datetime.date(2018, 1, 10), datetime.date(2018, 1, 11), datetime.date(2018, 1, 12), datetime.date(2018, 1, 13)]

推荐阅读