为什么日期时间等距过渡向后移1周?

时间:2019-06-11 07:58:02

标签: python python-3.x datetime

我启动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)

有人可以登机吗? 非常感谢!

1 个答案:

答案 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)