web-dev-qa-db-fra.com

Comparer 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 cette datetime.timedelta valeur 0:00:01.782000

Je voudrais comparer comme ça:

#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?

50
Alpesh Patel

Vous devrez créer une nouvelle timedelta avec le temps spécifié:

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"

Sortie:

Slept for > 1 second

69
Mark Rushakoff

Il vous suffit de créer un objet timedelta de toutes pièces. La comparaison est ensuite triviale:

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

Corrigez-moi si je me trompe, mais je pense que vous pourriez aussi utiliser ce qui suit:

Au lieu de 

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

Tu pourrais dire 

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

mais il faut python 2.7+

0
max