2013-10-30 6 views
6

Ich erhalte derzeit die aktuelle Woche beginnend am Montag und endend am Sonntag, aber wie kann ich die letzte Woche beginnen, die am Montag beginnt und am Sonntag endet? Hier ist, was ich jetzt für die laufende Woche haben:Wie kann ich die vorherige Woche in Python bekommen?

>>> import datetime 
>>> today = datetime.date.today() 
>>> weekday = today.weekday() 
>>> start_delta = datetime.timedelta(days=weekday) 
>>> start_of_week = today - start_delta 
>>> week_dates = [] 
>>> for day in range(7): 
...  week_dates.append(start_of_week + datetime.timedelta(days=day)) 
... 
>>> week_dates 
[datetime.date(2013, 10, 28), datetime.date(2013, 10, 29), datetime.date(2013, 10, 30),  datetime.date(2013, 10, 31), datetime.date(2013, 11, 1), datetime.date(2013, 11, 2), datetime.date(2013, 11, 3)] 
>>> week_dates[0], week_dates[-1] 
(datetime.date(2013, 10, 28), datetime.date(2013, 11, 3)) <--- Monday, Sunday 
+0

Machen Sie dasselbe, aber gehen Sie noch 7 Tage zurück? –

+1

mögliche Duplikate von [Array von Daten in der letzten Woche, dieser Woche und der nächsten Woche erstellen] (http://stackoverflow.com/questions/17611774/build-array-of-dates-in-last-week-this-week- und nächste Woche) –

Antwort

12

Nur weeks=1 zu Ihrem start_delta fügen Sie eine zusätzliche Woche zu subtrahieren:

>>> start_delta = datetime.timedelta(days=weekday, weeks=1) 

So, für heute (Mittwoch, 30. Oktober 2013) start_delta wird 9 Tage (zurück bis letzten Montag, 21. Oktober 2013).

>>> start_delta 
datetime.timedelta(9) 
>>> start_of_week = today - start_delta 
>>> start_of_week 
datetime.date(2013, 10, 21) 
Verwandte Themen