我看到可以进行日期比较,也可以进行日期比较datetime.timedelta()
,但是我正在努力寻找如何检查当前时间(datetime.datetime.now()
)是否早于指定时间(晚于或晚于指定时间)(例如,上午8点),而不管日期如何。
Answers:
您无法将特定时间点(例如“现在”)与一个固定的重复事件(每天早上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
您可以使用对象的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()
!
受到Roger Pate的启发:
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.datetime.now().hour == 8
'23:23:00' > '23:59:00'
或'23:23:00' > '23:09:22'
那样的比较,就像您在两个datetime.datetime.now().strftime('%H:%M')
值之间所做的一样。这是实现时间之间比较的最好方法吗?我不知道。它行得通吗?据我测试,它工作正常。但绝对(当然):没有机会将其与具有月份,工作日的日期时间字符串一起使用。