我启动datetime.now()(今天是6/11)并过渡到工作日:
>>> now=datetime.now().isocalendar()
>>> now
(2019, 24, 2)
但是当我过渡回来时,发现它移位了1周:
>>> res = datetime.strptime(now[0]+'_'+now[1]+'_'+now[2], "%Y_%W_%w")
>>> res
datetime.datetime(2019, 6, 18, 0, 0)
有人可以登机吗? 非常感谢!
答案 0 :(得分:2)
from datetime import daytime
iso_string = str(now[0]).zfill(4) + '_' + str(now[1]).zfill(2) + '_' + str(now[2])
res = datetime.strptime(iso_string, "%G_%V_%u").date()
strptime对ISO周号有特殊的指示:"%G_%V_%u"
从试用开始看,前导零似乎并不重要,但是official standard表示确实如此,因此请确保将其与zfill()
相加。
这仅适用于python> = 3.6,strptime
的早期版本似乎与ISO周不兼容。
对于早期版本的python,我认为最好使用isoweek module:
from isoweek import Week
res = Week(now[0], now[1]).day(now[2]-1)