Python: `datetime.date.isocalendar()` 的反向操作是什么?

8 投票
1 回答
7275 浏览
提问于 2025-04-16 12:50

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

撰写回答