Имам 2 стойности на datetime: "start" и end ". Искам да върна списък с всички дати, които попадат точно в часа между двете (включително).
Например "старт" е 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)