Сравнение времени Python
Как сравнить время в python?
Я вижу, что сопоставление дат может быть выполнено, а также "timedelta", но я пытаюсь выяснить, как проверить, является ли текущее время (из datetime.now()) раньше, таким же или позже указанное время (например, 8 утра), независимо от даты.
Ответы
Ответ 1
Вы не можете сравнить определенный момент времени (например, "прямо сейчас" ) с незафиксированным повторяющимся событием (8 утра происходит каждый день).
Вы можете проверить, есть ли сейчас до или после сегодняшних 8 утра:
>>> 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
Ответ 2
Вы можете использовать метод 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
Ответ 3
Вы можете напрямую сравнивать объекты 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
>>>
Ответ 4
Вдохновленный Роджером Пате:
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"
Ответ 5
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
Ответ 6
Другой способ сделать это без добавления зависимостей или использования datetime - просто выполнить некоторую математику по атрибутам объекта времени. Он имеет часы, минуты, секунды, миллисекунды и часовой пояс. Для очень простых сравнений часов и минут должно быть достаточно.
d = datetime.utcnow()
t = d.time()
print t.hour,t.minute,t.second
Я не рекомендую это делать, если у вас нет невероятно простого варианта использования. Для чего-либо, требующего осведомленности о часовом поясе или осведомленности о датах, вы должны использовать дату и время.