2013-10-30 14 views
6

Attualmente sto ottenendo la settimana corrente che inizia il lunedì e termina di domenica, ma come posso ottenere la settimana precedente che inizia il lunedì e termina di domenica? Ecco quello che ho adesso per la settimana in corso:Come posso ottenere la settimana precedente in Python?

>>> 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

fare la stessa cosa, ma tornano altri 7 giorni? –

+1

possibile duplicato di [Costruisci array di date nella settimana scorsa, questa settimana e la prossima settimana] (http://stackoverflow.com/questions/17611774/build-array-of-dates-in-last-week-this-week- e-next-settimana) –

risposta

12

Basta aggiungere weeks=1 al tuo start_delta per sottrarre una settimana supplementare:

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

Quindi, per oggi (Mercoledì 30 ottobre 2013), start_delta saranno 9 giorni (ritorno all'ultimo lunedì 21 ottobre 2013).

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