2015-09-10 3 views
-2

Я хочу перебирать все дни в данном году: поэтому он будет генерировать объект datetime для 1 января, через все остальные дни (в том числе 29 февраля - если он существует в этом году) до 31 декабря.Как создать диапазон дат: каждый день данного года?

Как это сделать?

Я пытался это:

from datetime import datetime 
start_date = datetime(2015, 1, 1) 
start_date = startdate + 1 

Но потом понял, что вы не можете просто добавить один (тот, что?) Как this- вы должны добавить на timedelta (один день), чтобы сделать это.

+1

Вы пробовали что-нибудь все? –

ответ

0
from datetime import datetime, timedelta 

def gen_days(year): 
    start_date=datetime(year, 1, 1) 
    end_date=datetime(year, 12, 31) 
    d=start_date 
    dates=[ start_date ] 
    while d < end_date: 
     d += timedelta(days=1) 
     dates.append(d) 
    return dates 

if __name__=='__main__': 
    d=gen_days(2015) 
    print len(d) 
    d2=gen_days(2016) # leap year 
    print len(d2) 

Sorry - собирался отправить некоторые нерабочий код с моим вопросом, но я получил это работает гораздо быстрее, чем я думал (с помощью этого и других: How to increment the day in datetime? Python)

Смежные вопросы