2011-12-16 63 views
1

我想比较两次,如果新的时间超过2分钟,然后if语句将打印输出,我可以得到datetime.datetime.now()的输出,但怎么做我检查旧时间是否少于2分钟?蟒蛇减去时间并运行循环

#!/usr/bin/env python 


import datetime 
from time import sleep 
now = datetime.datetime.now() 

sleep(2) 

late = datetime.datetime.now() 
constant = 2 
diff = late-now 
if diff <= constant: 
    print "True time is less than 2min" 
else: 
    print "Time exceeds 2 mins" 

有什么想法?

更新:

我现在保存旧日期在文件字符串,然后从当前时间减去它,旧的日期存储格式

2011-12-16 16:14: 50.800856

所以当我做

now = "2011-12-16 16:14:50.838638" 

sleep(2) 

nnow = datetime.strptime(now, '%Y-%m-%d %H:%M:%S') 

late = datetime.now() 

diff = late-nnow 

它给了我这个错误

ValueError: unconverted data remains: .838638 
+0

差异是datetime.timedelta对象,它有.totalseconds()方法或.seconds财产 – yosukesabai 2011-12-16 15:00:43

+0

感谢yosukesabai – krisdigitx 2011-12-16 15:05:43

回答

3

减去2种datetime情况下返回timedelta具有total_seconds方法:

contant = 2 * 60 
diff = late-now 
if diff.total_seconds() <= constant: 
2

这只是一个问题的更新,因为从sje397答案是完美的。

使用格式字符串这样对整个时间匹配字符串:

nnow = datetime.strptime(now, '%Y-%m-%d %H:%M:%S.%f') 

的%F微秒后点相匹配。这是自Python 2.6以来的新增功能。

1

你可以自己比较datetime对象:

from datetime import datetime, timedelta 

ts = datetime.strptime("2011-12-16 16:14:50.838638Z", '%Y-%m-%d %H:%M:%S.%fZ') 
ts += timedelta(minutes=2) # add 2 minutes 

if datetime.utcnow() < ts: 
    print("time is less") 
else: 
    print("time is more or equal")