Python 3.10中datetime的strftime与isocalendar结果不一致咨询
Python strftime与isocalendar年份不一致的原因
这不是strftime的错误,是格式符使用问题:
%Y获取的是日期本身的公历年份,2022年1月1日的公历年确实是2022,所以strftime('%Y-%V')返回2022-52。isocalendar()返回的是ISO周历法下的年份,根据ISO 8601标准,第52周的最后几天可能跨越到下一个公历年,但仍归属前一年的ISO周,所以2022年1月1日属于2021年的第52周。
要让strftime返回和isocalendar一致的年份,应该用%G格式符(ISO周所属年份),而不是%Y:
import datetime datetime.date(2022, 1, 1).strftime('%G-%V') # 返回 '2021-52'
简单总结:
%Y→ 公历年%G→ ISO周年(和isocalendar().year对应)%V→ ISO周数
内容的提问来源于stack exchange,提问作者Pieter Hartel
相关产品推荐
相关产品推荐

