Сравнение дельты времени в python

У меня есть переменная <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(), но, похоже, это работает. Есть ли более простой способ сравнить это значение?


person Alpesh Patel    schedule 07.04.2010    source источник
comment
Обратите внимание, что 0:00:01.78200 — это то, как выглядит timedelta при печати, но это не особенно полезный формат при отладке. Используйте repr(), чтобы показать более точную информацию. Таким образом, вы могли бы догадаться о решении, поскольку repr(d) показал бы datetime.timedelta(0, 1, 782000)   -  person Thomas Wouters    schedule 07.04.2010


Ответы (4)


Вам нужно будет создать новый 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

person Mark Rushakoff    schedule 07.04.2010
comment
Обратите внимание, что если вы используете Pandas, существует pandas.Timedelta с заглавной T... - person Fips; 16.10.2020

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

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

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

Вместо

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

Ты мог бы сказать

if elapsed.seconds > 1:
person Argyrios Tzakas    schedule 15.05.2013

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

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

person max    schedule 28.03.2016