2010-04-07 12 views
42

Tengo una variable que es <type 'datetime.timedelta'> y me gustaría compararla con ciertos valores.Comparando un delta de tiempo en python

permite decir d produce este valor datetime.timedelta0:00:01.782000

me gustaría compararlo así:

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

He intentado convertir datetime.timedelta.strptime() pero eso no parece funcionar. ¿Hay alguna manera más fácil de comparar este valor?

+1

Tenga en cuenta que '0: 00: 01.78200' es como se ve un timedelta cuando se imprime, pero ese no es un formato particularmente útil cuando se depura. Use 'repr()' para mostrar información más precisa. De esta forma, podría haber adivinado la solución, ya que 'repr (d)' habría mostrado 'datetime.timedelta (0, 1, 782000)' –

Respuesta

60

que tendrá que create a new timedelta con la cantidad especificada de tiempo:

d > timedelta(minutes=1) 

O este guión un poco más completa ayudará elaborada:

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" 

Salida:

Slept for > 1 second

10

Solo necesitas crear timedelta objeto a partir de cero, la comparación después de eso es trivial:

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

corrígeme si me equivoco, pero creo que también se puede utilizar lo siguiente:

En lugar de

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

Usted podría decir

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

pero requiere python 2.7+