Python时间比较

如何比较Python中的时间?

我看到date比较可以完成,也有“timedelta”,但我努力找出如何检查当前时间(从datetime.now())是否早于,相同或晚于指定的时间(例如上午8点),无论date如何。

无法将某个特定时间点(例如“现在”)与未固定的重复事件(每天上午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 

您可以使用datetime对象的time()方法获取一天中的时间,您可以将其用于比较而不考虑date:

 >>> 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对象

例如:

 >>> 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 >>> 

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" 

date时间有比较能力

 >>> import datetime >>> import time >>> a = datetime.datetime.now() >>> time.sleep(2.0) >>> b = datetime.datetime.now() >>> print a < b True >>> print a == b False 

另一种不添加依赖关系或使用date时间的方法就是简单地对时间对象的属性进行一些计算。 它有小时,分钟,秒,毫秒和时区。 对于非常简单的比较,小时和分钟应该是足够的。

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

除非你有一个非常简单的用例,否则我不build议这样做。 对于需要时区意识或date意识的任何事情,您应该使用date时间。