【问题标题】:Comparing a time delta in python比较python中的时间增量
【发布时间】:2016-03-28 18:02:59
【问题描述】:

我有一个变量<type 'datetime.timedelta'>,我想将它与某些值进行比较。

假设 d 产生这个 datetime.timedelta0: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(),但这似乎确实有效。有没有更简单的方法来比较这个值?

【问题讨论】:

  • 请注意,0:00:01.78200 是打印时 timedelta 的样子,但这在调试时并不是特别有用的格式。使用repr() 显示更准确的信息。这样你可能已经猜到了解决方案,因为repr(d) 会显示datetime.timedelta(0, 1, 782000)

标签: python datetime timedelta


【解决方案1】:

您必须在指定的时间内create a new 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

【讨论】:

  • 请注意,如果您使用的是 Pandas,则存在带有 capital T... 的 pandas.Timedelta
【解决方案2】:

您只需要从头开始创建timedelta 对象,之后的比较就很简单了:

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

【讨论】:

    【解决方案3】:

    如果我错了,请纠正我,但我认为您也可以使用以下内容:

    代替

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

    你可以说

    if elapsed.seconds > 1:
    

    【讨论】:

      【解决方案4】:
      if d.total_seconds() > 60:
        print("elapsed time is greater than 1 minute")
      

      但它需要 python 2.7+

      【讨论】:

        猜你喜欢
        • 2016-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-19
        • 2015-07-23
        • 2014-04-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多