gur*_*osh 2 python datetime iso
这是我的Python代码
import datetime
a = datetime.datetime(2012, 1, 1)
print(a.isocalendar())
Run Code Online (Sandbox Code Playgroud)
输出是
(2011, 52, 7)
Run Code Online (Sandbox Code Playgroud)
输出的格式是一个元组,其中包含给定日期实例的年份、周数和工作日(按各自的顺序)。
为什么会这样呢?不应该是吗(2012, 1, 1)?如果不是,我怎样才能将它转换为绝对周数?
返回一个三元组(ISO 年份、ISO 周数、ISO 工作日)。
ISO 日历是公历的一种广泛使用的变体。有关详细解释,请参阅https://www.staff.science.uu.nl/~gent0113/calendar/isocalendar.htm 。
ISO 年由 52 或 53 个完整周组成,一周从星期一开始,到星期日结束。ISO 年份的第一周是包含星期四的一年中的第一个(公历)日历周。这称为第 1 周,该星期四的 ISO 年与其公历年相同。
例如,2004 年从星期四开始,因此 ISO 2004 年的第一周从 2003 年 12 月 29 日星期一开始,到 2004 年 1 月 4 日星期日结束,因此 date(2003, 12, 29).isocalendar() == ( 2004, 1, 1) 和 date(2004, 1, 4).isocalendar() == (2004, 1, 7)。
在您的例子中,2012年1月1日是星期日,因此根据ISO日历规则,2012年的第一周是1月2日-1月8日(因为第一个星期四是1月5日),而1月1日属于2011年的最后一周。