2010-04-07 22 views
42

Ho una variabile che è <type 'datetime.timedelta'> e vorrei confrontarla con determinati valori.Confronto di un delta temporale in python

Diciamo d produce questo datetime.timedelta valore 0:00:01.782000

Vorrei confrontare in questo modo:

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

Ho provato a convertire datetime.timedelta.strptime() ma questo non sembra funzionare. C'è un modo più semplice per confrontare questo valore?

+1

Si noti che '0: 00: 01.78200' è l'aspetto di una timedelta quando viene stampato, ma non è un formato particolarmente utile durante il debug. Usa 'repr()' per mostrare informazioni più accurate. In questo modo potresti aver indovinato la soluzione, dato che 'repr (d)' avrebbe mostrato 'datetime.timedelta (0, 1, 782000)' –

risposta

60

dovrete create a new timedelta con la quantità specificata di tempo:

d > timedelta(minutes=1) 

O questo script un po 'più completo aiuterà elaborato:

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" 

uscita:

Slept for > 1 second

10

Hai solo bisogno di creare timedelta oggetto da zero, dopo il confronto che è banale:

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

mi corregga se sbaglio, ma credo che si potrebbe anche utilizzare il seguente:

Invece di

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

È poteva dire

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

ma richiede python 2.7+