2010-01-25 3 views
3

У меня есть 2 даты, и я пытаюсь построить метки оси x графика.Перечислить DateRange

Таким образом, мне нужен способ, чтобы взять 2 даты-времени объекты, т.е. 2009-10-12 00:00:00 и 2009-10-20 00:00:00 и создать список, как так:

["2009-10-12", "2009-10-13", "2009-10-14", ..., "2009-10-19", "2009-10-20"] 

Какие библиотеки следует использовать для оказания помощи? У меня есть чувство datetime и Функция timedelta поможет немного.

Я могу включить код, если это имеет смысл, но у меня есть ощущение, что есть что-то встроенное в библиотеки python, которые позволяют это сделать очень легко. Кажется, я просто скучаю по нему.

+3

http://stackoverflow.com/questions/1950098/does-python-have-any-for-loop-equivalent- not-foreach – bernie

+2

Точный Дубликат: http://stackoverflow.com/questions/1060279/iterating-through-a-range-of-dates-in-python –

ответ

3
import datetime 

first=datetime.date(2009,10,12) 
last=datetime.date(2009,10,20) 
adate=first 
dates=[] 
while adate<=last: 
    dates.append(adate) 
    adate+=datetime.timedelta(1) 
print(dates) 

Или для любителей списка понимания:

len=(last-first).days 
dates=[first+datetime.timedelta(n) for n in range(len+1)] 
+0

Спасибо: Я очень люблю понимание :) –

0
from datetime import date, timedelta 

a, b = date(1010, 10, 12), date(1010, 10, 20) 
times = [a + timedelta(x) for x in xrange((b-a).days)] 

# If you want to format them: 
times = [x.strftime('%Y-%m-%d') for x in times] 
+0

Это с datetime.date объектов, но datetime.datetime должен работать одинаково. –

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