Я вижу, что сравнение дат может быть выполнено, и это тоже datetime.timedelta()
, но я изо всех сил пытаюсь выяснить, как проверить, является ли текущее время ( datetime.datetime.now()
) раньше, позже или таким же, чем указанное время (например, 8 утра), независимо от даты.
105
'23:23:00' > '23:59:00'
или'23:23:00' > '23:09:22'
, как и между двумяdatetime.datetime.now().strftime('%H:%M')
значениями. Является ли это лучшим способом сравнения времен? Я не знаю. Это работает? Насколько я тестировал, он работал нормально. Но определенно (и, конечно): нет возможности использовать это со строкой datetime, в которой есть месяц, будние дни.Ответы:
Вы не можете сравнивать конкретный момент времени (например, «прямо сейчас») с нефиксированным повторяющимся событием (каждый день бывает 8 утра).
Вы можете проверить, до или после сегодняшнего 8:00:
>>> import datetime >>> now = datetime.datetime.now() >>> today8am = now.replace(hour=8, minute=0, second=0, microsecond=0) >>> now < today8am True >>> now == today8am False >>> now > today8am False
источник
Вы можете использовать
time()
методdatetime
объектов для получения времени суток, которое можно использовать для сравнения без учета даты:>>> this_morning = datetime.datetime(2009, 12, 2, 9, 30) >>> last_night = datetime.datetime(2009, 12, 1, 20, 0) >>> this_morning.time() < last_night.time() True
источник
datetime.datetime.now().time()
, не забудьте скобкиnow()
!Вы можете напрямую сравнивать объекты datetime.datetime
Например:
>>> a datetime.datetime(2009, 12, 2, 10, 24, 34, 198130) >>> b datetime.datetime(2009, 12, 2, 10, 24, 36, 910128) >>> a < b True >>> a > b False >>> a == a True >>> b == b True >>>
источник
В духе Роджера Пейта:
import datetime def todayAt (hr, min=0, sec=0, micros=0): now = datetime.datetime.now() return now.replace(hour=hr, minute=min, second=sec, microsecond=micros) # Usage demo1: print todayAt (17), todayAt (17, 15) # Usage demo2: timeNow = datetime.datetime.now() if timeNow < todayAt (13): print "Too Early"
источник
Другой способ сделать это без добавления зависимостей или использования datetime - просто выполнить некоторую математику с атрибутами объекта времени. В нем есть часы, минуты, секунды, миллисекунды и часовой пояс. Для очень простых сравнений должно быть достаточно часов и минут.
d = datetime.utcnow() t = d.time() print t.hour,t.minute,t.second
Я не рекомендую делать это, если у вас нет невероятно простого сценария использования. Для всего, что требует знания часового пояса или информации о датах, вы должны использовать datetime.
источник
Удивлен, что не видел здесь этого лайнера:
datetime.datetime.now().hour == 8
источник
Вы можете использовать функцию Timedelta для сравнения увеличения времени x.
>>> import datetime >>> now = datetime.datetime.now() >>> after_10_min = now + datetime.timedelta(minutes = 10) >>> now > after_10_min False
Просто комбинация этих ответов это И Роджер
источник
datetime имеет возможность сравнения
>>> import datetime >>> import time >>> a = datetime.datetime.now() >>> time.sleep(2.0) >>> b = datetime.datetime.now() >>> print a < b True >>> print a == b False
источник