繁体   English   中英

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

[英]Why datetime isocalendar transition back will shift 1 week?

我开始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)

有人可以登机吗? 很感谢!

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"

从尝试开始,看起来前导零似乎并不重要,但是官方标准说确实如此,因此请务必使用zfill()将其添加。

这仅适用于python> = 3.6, strptime版本的strptime似乎与ISO周不兼容。

对于早期版本的python,我认为最好使用isoweek模块

from isoweek import Week

res = Week(now[0], now[1]).day(now[2]-1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM