Python получает значения целого часа между двумя объектами datetime - PullRequest
1 голос
/ 18 мая 2011

У меня есть 2 значения даты и времени: «начало» и «конец». Я хотел бы вернуть список всех дат, приходящихся ровно на час между двумя (включительно).

Например, «начало» - 09:30, а «конец» - 14:00 (в тот же день). Я хотел бы получить следующие значения: 10:00, 11:00, 12:00, 13:00, 14:00.

Полагаю, что вы бы сделали, чтобы получить следующий целый час после «запуска», добавить его в пустой список, затем создать цикл, который добавляет и часы, проверяет, меньше ли (или равен) «конец» добавьте его в список, если оно истинно.

Что я не могу понять, так это как получить ближайший целый час от даты начала времени.

Ответы [ 2 ]

3 голосов
/ 18 мая 2011

Самым простым будет заменить минуты и секунды времени начала на ноль, а затем добавить один час.

Вам понадобится особый случай, если время начала точно в час, и вы хотите включить его

например

>>> 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 голос
/ 18 мая 2011

Лучший способ сделать это - использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...