提问者:小点点

datetime ISO week表示一年的第一天和最后一天都在同一周内


我正在运行Python3.8.3,我发现ISO Week格式(%v)有些奇怪:

2019年的第一天和最后一天都在第1周。

from datetime import date
print(date(2019, 1, 1).strftime('%Y-W%V'))
print(date(2019, 12, 29).strftime('%Y-W%V'))
print(date(2019, 12, 31).strftime('%Y-W%V'))

输出:

2019-W01  
2019-W52  
2019-W01

为什么它会表现得那样?


共1个答案

匿名用户

完全正确。

正如您在日期中看到的,所有日期都在2019中,因此使用%y得到2019是正确的。

周数由ISO定义,因此一周可以考虑在上一年或下一年。

您需要使用%g来获取星期年编号(%v)。