为什么datetime isocalendar转换回将移动1周?

2024-09-30 02:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始datetime.now()(今天是6/11)并过渡到星期一:

>>> now=datetime.now().isocalendar()
>>> now
(2019, 24, 2)

但当我转回来的时候,我发现它一周一班:

>>> res = datetime.strptime(now[0]+'_'+now[1]+'_'+now[2], "%Y_%W_%w")
>>> res 
datetime.datetime(2019, 6, 18, 0, 0)

有人能坐飞机吗? 非常感谢


Tags: datetimeresnowstrptimeisocalendar坐飞机
1条回答
网友
1楼 · 发布于 2024-09-30 02:24:48
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()

strtime对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)

相关问题 更多 >

    热门问题