![]() |
1
78
Python 3.8增加了 fromisocalendar() 方法:
Python 3.6增加了
原始答案 我最近不得不自己解决这个问题,并提出了这个解决方案:
几个测试用例:
|
![]() |
2
17
从Python 3.6开始,你可以使用新的
给定一个包含year、weeknumber和weekday number的字符串,很容易将其解析为日期:
或者作为具有整数输入的函数:
|
![]() |
3
10
这是根据@BenJames的精彩回答改编的。你不必知道一年的第一天。您只需知道一个日期的示例,该日期肯定在同一ISO年份,以及该日期的ISO日历周和日。 1月4日只是一个例子,因为正如Ben指出的那样,1月4号总是属于同一个ISO年和公历年,并且是一年中的第一天。 由于周的长度都是一样的,你可以简单地减去你想要的日期的ISO和你在两种形式中都知道的日期的SO之间的天数和周数,再加上天数和周数来计算。(这些数字是正数还是负数并不重要,所以你可以选择其他“固定日期”,比如12月28日。) 编辑我纠正了这一点,因为正如@JoSo所指出的那样,同样属于ISO年的公历年的第一天是1月4日,而不是1月5日。正如解释所说,选择哪个日期作为参考点并不重要,但选择1月4日会使这个选择不那么“神奇”。 |
![]() |
4
4
对于下一个来到这里的人来说,这是Ben的好解决方案的一个更短、单定义的版本:
|
![]() |
5
3
从Python 3.6开始,
|
![]() |
6
0
请注意,%W是周#(0-53),与ISO周(1-53)不同。在某些边缘情况下,%W将无法工作。 |
![]() |
7
0
我提出了一个类似于Ben James发布的解决方案,但使用了一个函数:
我用2020年最后一周和2021年第一周的边界值进行了测试,结果很好。 |
![]() |
8
-1
编辑:忽略这一点,边缘案例很痛苦。采用本的解决方案。
好的,仔细检查后,我注意到
几个陷阱:ISO周数从
|