I'm trying to calculate the difference between two dates in "weeks of year". I can get the datetime object and get the days etc but not week numbers. I can't, of course, subtract dates because weekends can't be ensured with that.
I tried getting the week number using d1.isocalendar()[1] and subtracting d2.isocalendar()[1] but the issue is that isocalendar()[1] returns December 31, 2012 as week 1 (which supposedly is correct) but that means my logic cannot span over this date.
For reference, here's my complete code:
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 With this code, the lecture on Dec 31, 2012 ends up being -35.