考虑到python中一周的开始日是星期一,我如何获得一年中每周的开始日期?
这假设开始日是星期日:
>>>import datetime as datetime
>>>dt = datetime .date(2013,12,30)
>>>dt.isocalendar()[1]
1
但是,结果不应该是1
,因为 30-12-2013 仍然是 2013 年。
考虑到python中一周的开始日是星期一,我如何获得一年中每周的开始日期?
这假设开始日是星期日:
>>>import datetime as datetime
>>>dt = datetime .date(2013,12,30)
>>>dt.isocalendar()[1]
1
但是,结果不应该是1
,因为 30-12-2013 仍然是 2013 年。
我不认为 isocalendar 的行为可以改变。
来自:http ://docs.python.org/2/library/datetime.html#datetime.date.isocalendar
ISO 年的第一周是包含星期四的一年中的第一个(公历)日历周。
但是 strftime 可以显示周数:
" %U "新一年中第一个星期日之前的所有日子都被认为是在第 0 周。" %W "新一年中第一个星期一之前的所有日子都被认为是在第 0 周。"
>>> import datetime
>>> dt = datetime.date(2013,12,30)
>>> dt.isocalendar()
(2014, 1, 1)
>>> dt.strftime("%U")
'52'
但是要回答您的第一个问题,您为什么不直接使用 datetime.timedelta 呢?
>>> import datetime
>>> dt = datetime.date(2013,12,30)
>>> w = datetime.timedelta(weeks=1)
>>> dt - w
datetime.date(2013, 12, 23)
>>> dt + w
datetime.date(2014, 1, 6)
>>> dt + 10 * w
datetime.date(2014, 3, 10)