一年中的日历周数?

Tim*_*Tim 3 python date

在Python中,我们如何找出一年中的日历周数?

我在标准库中找不到函数.

然后我想了想date(year, 12, 31).isocalendar()[1],但是

例如,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).

Mar*_*ers 9

根据相同的ISO规范,1月4日将始终是给定年份的第1周.按照同样的计算,12月28日总是在一年的最后一周.您可以使用它来查找给定年份的上周数字:

from datetime import date, timedelta

def weeks_for_year(year):
    last_week = date(year, 12, 28)
    return last_week.isocalendar()[1]
Run Code Online (Sandbox Code Playgroud)

另见维基百科,ISO周文章列出了上周的所有属性:

  • 这是今年的最后一个星期四.
  • 这是最后一周,12月份的大部分时间(4次或更多次).
  • 它的中间一天,周四,在结束的一年.
  • 它的最后一天是最接近12月31日的星期日.
  • 它有12月28日.因此,最新的可能日期是12月28日至1月3日,即最早的12月21日至28日.

对于更全面的周计算,您可以使用该isoweek模块 ; 它有一个Week.last_week_of_year()类方法:

>>> import isoweek
>>> isoweek.Week.last_week_of_year(2014)
isoweek.Week(2014, 52)
>>> isoweek.Week.last_week_of_year(2014).week
52
Run Code Online (Sandbox Code Playgroud)