在Python中比较时间间隔

99 投票
4 回答
151686 浏览
提问于 2025-04-15 21:19

我有一个变量,它的类型是 <type 'datetime.timedelta'>,我想把它和一些特定的值进行比较。

假设这个变量 d 产生了一个 datetime.timedelta 的值 0:00:01.782000,也就是表示 1 秒加上 782 毫秒。

我想这样进行比较:

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

我尝试过用 datetime.timedelta.strptime() 来转换,但好像不太管用。有没有更简单的方法来比较这个值呢?

4 个回答

11

你可以这样说:

if elapsed.total_seconds() > 60:
    # elapsed time is greater than one minute

而不是再创建一个 timedelta 对象。

21

你只需要从头开始创建一个 timedelta 对象,之后的比较就简单多了:

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

你需要创建一个新的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"

输出结果:

睡了超过1秒

撰写回答