2010-04-07 10 views
42

Ich habe eine Variable, die <type 'datetime.timedelta'> ist, und ich möchte es mit bestimmten Werten vergleichen.Vergleichen eines Zeit-Delta in Python

Können sagen, d erzeugt diesen datetime.timedelta Wert 0:00:01.782000

Ich mag würde es so vergleichen:

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

Ich habe versucht, datetime.timedelta.strptime() Umwandlung aber das scheint zu funktionieren. Gibt es einen einfacheren Weg, diesen Wert zu vergleichen?

+1

Beachten Sie, dass "0: 00: 01.78200" ist, wie ein Timedelta wie gedruckt aussieht, aber das ist kein besonders nützliches Format beim Debuggen. Verwenden Sie 'repr()', um genauere Informationen anzuzeigen. Auf diese Weise hätten Sie vielleicht die Lösung erraten, denn 'repr (d)' hätte 'datetime.timedelta (0, 1, 782000)' angezeigt –

Antwort

60

Sie werden zu create a new timedelta mit der angegebenen Menge Zeit haben:

d > timedelta(minutes=1) 

Oder dieses etwas vollständigere Skript helfen aufwendigen:

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" 

Ausgang:

Slept for > 1 second

10

Sie müssen nur 012 erstellenObjekt von Grund auf, Vergleich, nachdem das ist trivial:

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

mich korrigieren, wenn ich falsch, aber ich denke, dass Sie auch die folgenden verwenden:

Statt

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

Sie sagen konnte

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

aber es erfordert Python 2.7+