如何比较python中的时间?
我看到日期比较可以完成并且还有“timedelta”,但是我很难找到如何检查当前时间(来自datetime.now())是否早于,等于或晚于指定时间(例如早上8点),无论日期如何。
答案 0 :(得分:101)
你无法将特定时间点(例如“现在”)与不固定的重复事件(每天早上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
答案 1 :(得分:53)
您可以使用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
答案 2 :(得分:9)
您可以直接比较datetime.datetime对象
E.g:
>>> 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
>>>
答案 3 :(得分:4)
灵感来自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"
答案 4 :(得分:3)
您可以将Timedelta函数用于x时间增加比较。
>>> import datetime
>>> now = datetime.datetime.now()
>>> after_10_min = now + datetime.timedelta(minutes = 10)
>>> now > after_10_min
False
答案 5 :(得分:1)
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 :(得分:1)
在不添加依赖项或使用datetime的情况下执行此操作的另一种方法是简单地对时间对象的属性进行一些数学运算。它有小时,分钟,秒,毫秒和时区。对于非常简单的比较,小时和分钟就足够了。
d = datetime.utcnow()
t = d.time()
print t.hour,t.minute,t.second
除非你有一个非常简单的用例,否则我不建议这样做。对于需要时区感知或日期意识的任何事情,您应该使用日期时间。
答案 7 :(得分:0)
很惊讶,我在这里没有看到这支班轮:
datetime.datetime.now().hour == 8