'%H:%M'
tdelta = datetime.strptime(end, FMT) - datetime.strptime(start, FMT)
if tdelta >= timedelta(hours=1, minutes=30):
return True
return False
Где, start и end - два времени. Например - "13:00" и "14:30"
Данная функция проверяет, если ли между ними 1.5 часа.
Но если я передаю "22:00" и "01:30", то он выдаёт False, если посмотреть на tdelta, то она:
-1 day, 3:00:00
Полагаю, проблема в -1 day, как я могу этого избежать?
по идее должно работать def check_difference_time(start, end): FMT = '%H:%M' delta_secs = (datetime.strptime(end, FMT) - datetime.strptime(start, FMT)).total_seconds() if (delta_secs%86400) >= timedelta(hours=1, minutes=30).total_seconds(): return True return False
Вещь страшная, но работает. Благодарю.
просто возьми модуль от разности
Это не число, чтобы искать модуль.
я знаю, что это не число
Как вариант использовать timestamp() (гугли Unix timestamp), результат в секундах, а дальше просто
from datetime import datetime, timedelta FMT = '%H:%M' def check_time_difference(start: str, end: str) -> bool: tdelta = datetime.strptime(end, FMT) - datetime.strptime(start, FMT) return abs(tdelta) >= timedelta(hours=1, minutes=30) print(check_time_difference("22:00", "1:30"))
ни к чему там таймстампы…
это некорректное решение def check_difference_time(start, end): FMT = '%H:%M' tdelta = datetime.strptime(end, FMT) - datetime.strptime(start, FMT) return abs(tdelta) >= timedelta(hours=1, minutes=30) >>> check_difference_time("22:00", "1:30") True >>> check_difference_time("23:30", "00:30") True
с чего бы?
ну потому что check_difference_time("23:30", "00:30") должен вернуть False, а метод возвращает True
повторю свой вопрос: зачем ему возвращать False?
там же 23 часа разница
всегда считал, что с 23:30 до 00:30 должен пройти 1 час
а почем не неделя?
shrug
от 23:00 до 00:30 тех же суток проходит -23 часа
так там в параметрах переменные start и end. я предположил, что если end меньше start, то логичнее предположить, что метка end уже в следующий день попадает
а чем следующий день лучше двух миллиардов других дней?
наверное тем, что если бы там допускалось, что разница может быть больше 24 часов, то будет использоваться не только часы и минуты, но и дата
видишь там в FMT дату? я тоже нет
а вот это вот вообще не факт
а как ещё?
а если в этот день часы перевели?
тогда что-то говорить про разность вообще бессмысленно
но исходная задача существует
И правда.
Вот.
мда
Что-то не так?
Обсуждают сегодня