Ниже приведен код, который я использовал в одном из моих проектов.Он основан на североамериканской системе нумерации недель, где первая неделя - это неделя, содержащая 1 января.
from datetime import date
def week1_start_ordinal(year):
jan1 = date(year, 1, 1)
jan1_ordinal = jan1.toordinal()
jan1_weekday = jan1.weekday()
week1_start_ordinal = jan1_ordinal - ((jan1_weekday + 1) % 7)
return week1_start_ordinal
def week_from_date(date_object):
date_ordinal = date_object.toordinal()
year = date_object.year
week = ((date_ordinal - week1_start_ordinal(year)) // 7) + 1
if week >= 52:
if date_ordinal >= week1_start_ordinal(year + 1):
year += 1
week = 1
return year, week
Например:
>>> from datetime import date
>>> week_from_date(date(2015, 12, 27))
(2016, 1)