可能重复:
What’s the best way to find the inverse of datetime.isocalendar()?
我有ISO 8601年和周编号,我需要将其翻译为该周(星期一)第一天的日期。我怎么能这样做?
datetime.strptime()同时采用{{1}}和%W
指令,但都不遵守datetime.isocalendar()使用的ISO 8601工作日规则。
更新: Python 3.6支持libc中也存在的%U
,%G
和%V
指令,允许这样一行:
%u
答案 0 :(得分:65)
使用isoweek module,您可以执行以下操作:
from isoweek import Week
d = Week(2011, 40).monday()
答案 1 :(得分:35)
%W将第一个星期一视为第1周,但ISO将第1周定义为包含1月4日。 <结果来自
datetime.strptime('2011221', '%Y%W%w')
如果第一个星期一和1月4日是在不同的星期,是一个人。 如果1月4日是星期五,星期六或星期日,后者就是这种情况。 所以以下内容应该有效:
from datetime import datetime, timedelta, date
def tofirstdayinisoweek(year, week):
ret = datetime.strptime('%04d-%02d-1' % (year, week), '%Y-%W-%w')
if date(year, 1, 4).isoweekday() > 4:
ret -= timedelta(days=7)
return ret