Сравнение времени Python - PullRequest
       41

Сравнение времени Python

73 голосов
/ 02 декабря 2009

Как мне сравнить время в питоне?

Я вижу, что сравнение дат может быть выполнено, и есть также "timedelta", но я пытаюсь выяснить, как проверить, является ли текущее время (из datetime.now ()) более ранним, таким же или более поздним, чем указанное время (например, 8 утра) независимо от даты.

Ответы [ 6 ]

103 голосов
/ 02 декабря 2009

Вы не можете сравнить конкретный момент времени (например, «прямо сейчас») с нефиксированным, повторяющимся событием (8:00 происходит каждый день).

Вы можете проверить, есть ли сейчас до или после сегодня 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
53 голосов
/ 02 декабря 2009

Вы можете использовать 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
9 голосов
/ 02 декабря 2009

Вы можете напрямую сравнивать объекты 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 голосов
/ 15 марта 2012

Вдохновленный Роджером Пэйтом:

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"
1 голос
/ 03 апреля 2013

Еще один способ сделать это без добавления зависимостей или использования datetime - это просто выполнить некоторые математические операции с атрибутами объекта времени. Он имеет часы, минуты, секунды, миллисекунды и часовой пояс. Для очень простых сравнений должно быть достаточно часов и минут.

d = datetime.utcnow()
t = d.time()
print t.hour,t.minute,t.second

Я не рекомендую делать это, если у вас нет невероятно простого варианта использования. Если вам требуется информация о часовом поясе или о дате, вы должны использовать datetime.

1 голос
/ 02 декабря 2009

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