2017-01-12 4 views
1

Im пытаюсь получить все даты в диапазоне, чтобы сделать список дат:Получение последней даты в диапазоне от 2 даты

Когда я начала в 09/Jan/2017 ххх и конец в 11/Янв/2017 Я ожидаю, что следующие даты:

  • 2017-01-09
  • 2017-01-10
  • 2017-01-11

проблема я только получить

  • 2017-01-09
  • 2017-01-10

, что я пропустил здесь, чтобы получить 3-ю дату

def generate_index_date_list(): 
# format like "11/Jan/2017:11:11:11 +0200" 
start_datetime_string = "09/Jan/2017:11:11:11 +0200" 
end_datetime_string = "11/Jan/2017:11:11:11 +0200" 

startdate = datetime.strptime(start_datetime_string.split(":")[0], "%d/%b/%Y").date() 
enddate = datetime.strptime(end_datetime_string.split(":")[0], "%d/%b/%Y").date() 
for single_date in daterange(startdate, enddate): 
    print single_date 


def daterange(start_date, end_date): 
    for n in range(int((end_date - start_date).days)): 
     yield start_date + timedelta(n) 
+0

Не забывайте, что 'range' поднимается, но не включает конечное значение. Подумайте об этом с точки зрения чисел. Если 'daterange' был' 4-2', тогда он дал бы только две даты, где, как если бы это было '5-2', это дало бы 3. Вам нужно добавить 1 к вашей функции' daterange'. –

ответ

1

Вы пробовали:

def daterange(start_date, end_date): 
    for n in range(int((end_date - start_date).days) + 1): 
     yield start_date + timedelta(n) 

Python range генерирует номера до, но не включая с указанием числа. Поэтому последняя дата не включается.

+0

Действительно, xD, я уже думал, что это самое дерзкое. благодаря – JasperFennet

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