Я пытаюсь рассчитать разницу между двумя датами в "недели года". Я могу получить объект datetime и получить дни и т.д., Но не число недель. Я не могу, конечно, вычитать даты, потому что выходные не могут быть обеспечены этим.
Я попытался получить номер недели, используя d1.isocalendar()[1]
и вычитая d2.isocalendar()[1]
, но проблема в том, что isocalendar()[1]
возвращает December 31, 2012
как неделю 1 (что, предположительно, правильно), но это означает, что моя логика не может охватывать эту дату.
Для справки, здесь мой полный код:
def week_no(self):
ents = self.course.courselogentry_set.all().order_by('lecture_date')
l_no = 1
for e in ents:
if l_no == 1:
starting_week_of_year = e.lecture_date.isocalendar()[1] # get week of year
initial_year = e.lecture_date.year
if e == self:
this_year = e.lecture_date.year
offset_week = (this_year - initial_year) * 52
w_no = e.lecture_date.isocalendar()[1] - starting_week_of_year + 1 + offset_week
break
l_no += 1
return w_no
С помощью этого кода лекция 31 декабря 2012 года заканчивается на -35.