Een tijddelta vergelijken in python

Ik heb een variabele die <type 'datetime.timedelta'>is en ik zou deze willen vergelijken met bepaalde waarden.

Laten we zeggen dat d deze datetime.timedeltawaarde 0:00:01.782000

produceert

Ik zou het als volgt willen vergelijken:

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

Ik heb geprobeerd datetime.timedelta.strptime()te converteren, maar dat lijkt te werken. Is er een eenvoudigere manier om deze waarde te vergelijken?


Antwoord 1, autoriteit 100%

Je moet een nieuwe timedeltamaken met de opgegeven hoeveelheid tijd:

d > timedelta(minutes=1)

Of dit iets completere script helpt bij het uitwerken:

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"

Uitvoer:

Slept for > 1 second


Antwoord 2, autoriteit 18%

Je hoeft alleen maar een timedelta-object helemaal opnieuw te maken, daarna is vergelijken triviaal:

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

Antwoord 3, autoriteit 5%

Corrigeer me als ik het mis heb, maar ik denk dat je ook het volgende kunt gebruiken:

In plaats van

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

Je zou kunnen zeggen

if elapsed.seconds > 1:

Antwoord 4, autoriteit 4%

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

maar het vereist python 2.7+

Other episodes