Python时间比较

Ste*_*Jay 85 python comparison time

我如何比较python中的时间?

我看到日期比较可以完成,并且还有"timedelta",但我很难找到如何检查当前时间(来自datetime.now())是否早于,等于或晚于指定时间(例如早上8点),无论日期如何.

小智 108

无法将特定时间点(例如"现在")与不固定的重复事件(每天早上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
Run Code Online (Sandbox Code Playgroud)

  • 你可能想要接受PärWieslander的回答(并且通常应该等待几分钟而不是你做的事情:P),因为它更准确地说明了你的要求. (4认同)

Pär*_*der 59

您可以使用对象的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
Run Code Online (Sandbox Code Playgroud)

  • +1.你也可以`now.time()<datetime.time(hour = 8)`. (18认同)
  • 确保执行`datetime.datetime.now()。time()`,不要忘了`now()`中的括号! (2认同)

Jes*_*nee 11

很惊讶我在这里没有看到这一班轮:

datetime.datetime.now().hour == 8
Run Code Online (Sandbox Code Playgroud)


Kim*_*ais 9

您可以直接比较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
>>> 
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以使用 Timedelta 函数进行 x 时间增加比较。

>>> import datetime 

>>> now = datetime.datetime.now()
>>> after_10_min = now + datetime.timedelta(minutes = 10)
>>> now > after_10_min 

False
Run Code Online (Sandbox Code Playgroud)

只是这些答案的组合,还有罗杰


And*_*ewR 6

灵感来自罗杰·佩特:

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"
Run Code Online (Sandbox Code Playgroud)