61 votes

Comparaison d'un delta temporel en python

J'ai une variable qui est <type 'datetime.timedelta'> et je voudrais la comparer à certaines valeurs.

Disons que d produit ce datetime.timedelta valeur 0:00:01.782000

Je voudrais le comparer comme ceci:

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

J'ai essayé de convertir datetime.timedelta.strptime() mais cela semble fonctionner. Existe-t-il un moyen plus simple de comparer cette valeur?

86voto

Mark Rushakoff Points 97350

Vous devrez créer un nouveau timedelta avec la durée spécifiée:

 d > timedelta(minutes=1)
 

Ou ce script légèrement plus complet aidera à élaborer:

 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"
 

Production:

Slept for > 1 second

17voto

SilentGhost Points 79627

Vous avez juste besoin de créer timedelta objet à partir de zéro, la comparaison après cela est triviale:

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

3voto

Argyrios Tzakas Points 22

Corrigez-moi si je me trompe, mais je pense que vous pouvez également utiliser ce qui suit:

Au lieu de

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

Tu pourrais dire

 if elapsed.seconds > 1:
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X