Python 减去时间并运行 if 循环
我想比较两个时间,如果新的时间超过2分钟,那么这个条件就会输出结果。我可以获取当前时间,使用的是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
3 个回答
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")
2
这只是对更新的回答,因为sje397的回答已经很完美了。
使用这样的格式字符串可以匹配整个时间字符串:
nnow = datetime.strptime(now, '%Y-%m-%d %H:%M:%S.%f')
%f用来匹配小数点后的微秒。这是从Python 2.6开始新增的功能。
3
把两个 datetime
实例相减,会得到一个 timedelta
对象,这个对象有一个叫 total_seconds
的方法:
contant = 2 * 60
diff = late-now
if diff.total_seconds() <= constant: