recluze -4 years ago 193
Python Question

# How to calculate difference between two dates in weeks in python

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.

How about calculating the difference in weeks between the Mondays within weeks of respective dates? In the following code, `monday1` is the Monday on or before `d1` (the same week):

``````from datetime import datetime, timedelta

monday1 = (d1 - timedelta(days=d1.weekday()))
monday2 = (d2 - timedelta(days=d2.weekday()))

print 'Weeks:', (monday2 - monday1).days / 7
``````

Returns 0 if both dates fall withing one week, 1 if on two consecutive weeks, etc.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download