У мене є два значення часу: "початок" і кінець ". Я хотів би повернути список усіх часових дат, які припадають саме на годину між двома (включно).
Наприклад, "старт" - 09:30, а "кінець" - 14:00 (в той же день). Значення, які я "хотів би повернути", - 10:00, 11:00, 12:00, 13:00, 14:00.
Я здогадуюсь, що ти би робив - це отримати наступне цілечерез годину після "запуску", додайте його до порожнього списку, потім створіть цикл, який додає та години, перевіряє, чи є "менше" (або дорівнює) "кінця", і додайте його до списку, якщо це правда.
Що я не можу розібратися - це як дістатися найближчої цілої години до часу початку дати.
Відповіді:
3 для відповіді № 1Найпростіше було б замінити хвилини і секунди часу початку на нуль, а потім додати одну годину.
Вам знадобиться окремий випадок, якщо час початку точно в годину, і ви хочете включити його
наприклад
>>> from datetime import datetime, timedelta
>>> start_time = datetime.now()
>>> start_time
datetime.datetime(2011, 5, 18, 20, 38, 55, 546000)
>>> first = start_time.replace(minute=0, second=0, microsecond=0)+timedelta(hours=1)
>>> first
datetime.datetime(2011, 5, 18, 21, 0)
>>>
1 для відповіді № 2
Найкращий спосіб зробити це за допомогою timedelta.
>>> from datetime import datetime, timedelta
>>> start = datetime.now()
>>> if start.minute >= 30:
... start.replace(minute=0)+timedelta(hours=1)
... else:
... start.replace(minute=0)