Python: `datetime.date.isocalendar()` 的反向操作是什么?
datetime
模块里有一个方法叫做date.isocalendar
,它可以把一个日期转换成格式为([年], [周], [星期几])
的元组。那如果我想反过来做呢?也就是说,给我一个([年], [周], [星期几])
的元组,我该怎么得到一个date
对象呢?
1 个回答
4
编辑 找到了一个有解决方案的问题: 如何找到datetime.isocalendar()的反向操作的最佳方法?
我之前的解决方案有错误。在网上搜索时发现了一个之前的问题,经过测试后发现下面的方法有效。(可以查看上面链接中回答最多的问题,了解iso_to_gregorian
的定义)。基本上是找到ISO年份的开始日期,然后使用时间差来根据天数和周数计算当前日期。
for i in range(-10000,10000,1):
x = datetime.datetime.today().date() + datetime.timedelta(i)
x_iso = datetime.datetime.isocalendar(x)
assert iso_to_gregorian(*x_iso) == x