Задать вопрос

Почему python не отдает 31 января?

Есть диапазон дат, от 2019-12-01 до 2019-12-31
Но при переборе отдает только до 30 числа, в чем может быть проблема?

def daterange(start_date, end_date):
    for n in range(int ((end_date - start_date).days)):
        yield start_date + timedelta(n)
# задаем промежуток времени
start_date = date(2019, 1, 1)
end_date = date(2019, 1, 31)

for single_date in daterange(start_date, end_date):
    print(single_date.strftime("%Y-%m-%d"))
  • Вопрос задан
  • 1147 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
@OlegPyatakov
pyatakov.com
Вот эта конструкция в коде
range(int((end_date - start_date).days))
превращается в вашем случае в
range(30)
и выдает тридцать чисел:
0, 1, 2, 3 ...., 28, 29

Если по-человечески, то 31.01.2019 минус 01.01.2019 будет тридцать суток разницы.
Ответ написан
samodum
@samodum
Какой вопрос - такой и ответ
Цикл выполняется 30 раз. От 1 до 30
31-1=30
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы