2010-04-07 97 views
42

我有一个变量,它是<type 'datetime.timedelta'>,我想将它与某些值进行比较。比较python中的时间增量

比方说d生产这种datetime.timedelta0:00:01.782000

我想它这样的比较:

#if d is greater than 1 minute 
if d>1:00: 
    print "elapsed time is greater than 1 minute" 

我已经试过转换datetime.timedelta.strptime()但这似乎工作。有比较这个值的更简单的方法吗?

+1

请注意'0:00:01.78200'是打印时timedelta的样子,但在调试时这不是特别有用的格式。使用'repr()'来显示更准确的信息。这样你可能已经猜到了解决方案,因为'repr(d)'会显示'datetime.timedelta(0,1,782000)' – 2010-04-07 11:29:02

回答

60

你必须create a new timedelta与指定的时间:

d > timedelta(minutes=1) 

还是这个稍微更完整的脚本将帮助说明一下:

import datetime 
from time import sleep 

start = datetime.datetime.now() 
sleep(3) 
stop = datetime.datetime.now() 

elapsed = stop - start 

if elapsed > datetime.timedelta(minutes=1): 
    print "Slept for > 1 minute" 

if elapsed > datetime.timedelta(seconds=1): 
    print "Slept for > 1 second" 

输出:

Slept for > 1 second

10

你只需要创建012从头对象,之后比较是微不足道的:

>>> a = datetime.timedelta(minutes=1) 
>>> b = datetime.timedelta(minutes=1, seconds=1) 
>>> a < b 
True 
>>> a > b 
False 
3

纠正我,如果我错了,但我想,你也可以使用以下命令:

而不是

if elapsed > datetime.timedelta(seconds=1): 

你可以说

if elapsed.seconds > 1: 
0
if d.total_seconds() > 60: 
    print("elapsed time is greater than 1 minute") 

但它需要python 2.7+