我有一个ISO 8601周编号(例如:201801)对应于2018年第1周。在pyth中最好的方法是什么

时间:2018-05-17 09:23:23

标签: python datetime

我有一个ISO 8601周数,比如201801 - 相当于2018年第1周。

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

1 个答案:

答案 0 :(得分:0)

我会得到那个星期的星期日,然后从那开始给你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)]