Сравнение дельты времени в питоне - PullRequest
55 голосов
/ 07 апреля 2010

У меня есть переменная <type 'datetime.timedelta'>, и я хотел бы сравнить ее с определенными значениями.

Допустим, d производит это datetime.timedelta значение 0:00:01.782000

Я бы хотел сравнить это так:

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

Я попытался преобразовать datetime.timedelta.strptime(), но, похоже, это работает. Есть ли более простой способ сравнить это значение?

Ответы [ 4 ]

74 голосов
/ 07 апреля 2010

Вам нужно будет создать новый timedelta с указанным периодом времени:

d > timedelta(minutes=1)

Или этот немного более полный сценарий поможет разработать:

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"

Выход:

Slept for > 1 second

15 голосов
/ 07 апреля 2010

Вам просто нужно создать timedelta объект с нуля, сравнение после которого тривиально:

>>> a = datetime.timedelta(minutes=1)
>>> b = datetime.timedelta(minutes=1, seconds=1)
>>> a < b
True
>>> a > b
False
3 голосов
/ 15 мая 2013

Поправьте меня, если я ошибаюсь, но я думаю, что вы также можете использовать следующее:

Вместо

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

Вы могли бы сказать

if elapsed.seconds > 1:
0 голосов
/ 28 марта 2016
if d.total_seconds() > 60:
  print("elapsed time is greater than 1 minute")

но для этого требуется python 2.7 +

...