Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 842
recluze Avatar asked Jan 07 '13 07:01

recluze


People also ask

How do I calculate weeks between two dates in Python?

We will take the absolute value of this by using the abs() function to prevent the negative value. After this, we have to simply divide this value by 7 to get the difference between these two dates in number of weeks. Here we will use '//' (floor division) operator to ignore the float value after division.

How do you calculate the difference between two dates in weeks?

Here are the steps needed to calculate the number of weeks between two dates. Divide the number of days by 7 and round down. You will get the number of full weeks. Calculate the integer remainder after dividing the number of days by 7.

How do I calculate the difference between two dates in Python?

Use the strptime(date_str, format) function to convert a date string into a datetime object as per the corresponding format . To get the difference between two dates, subtract date2 from date1. A result is a timedelta object.


1 Answers

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.

like image 172
eumiro Avatar answered Sep 23 '22 02:09

eumiro