【问题标题】:Calculate the elapsed time in python [duplicate]在python中计算经过的时间[重复]
【发布时间】:2015-11-05 19:28:28
【问题描述】:

如何使用 python 计算事件的开始时间和结束时间之间的经过时间,格式为 00:00:00 和 23:59:59?

【问题讨论】:

    标签: python


    【解决方案1】:

    我不确定你如何使用 time 模块来做到这一点,但你可以使用 datetime 模块,在事件开始时获取结果 datetime.datetime.now() 并将其保存在变量中。

    然后当事件再次结束时得到datetime.datetime.now() 并从中减去第一次。您将获得一个datetime.timedelta() 对象,您可以将其转换为str() 以获取所需格式的数据。

    示例/演示 -

    >>> d = datetime.datetime.now()
    >>> d1 = datetime.datetime.now()
    >>> str(d1 - d)
    '0:00:06.989000'
    >>> str(datetime.timedelta(0,84332,12332))
    '23:25:32.012332'
    

    如果您不想要微秒部分,您可以在 '.' 上使用 rsplit() 并获取第一部分,示例 -

    >>> str(d1 - d).rsplit('.',1)[0]
    '0:00:06'
    >>> str(datetime.timedelta(0,84332,12332)).rsplit('.',1)[0]
    '23:25:32'
    

    【讨论】:

    • 这不是我想要的......抱歉 ToT 但谢谢你的回答
    • 嗯,根据问题,这正是你想要的(只是模块的区别),如果有要求,你能解释一下吗?
    • 我很抱歉。我的问题写错了,我太傻了ToT
    • 好的,那么问题是什么?我还添加了删除microsecond 部分(点之后)的部分。
    【解决方案2】:

    time.time() 只是系统时间,仅此而已。 datetime 可能是一个计划,但如果你想 DIY,divmod 效果很好

    def pretty_time(t):
        """takes a time, in seconds, and formats it for display"""
        m, s = divmod(t, 60)
        h, m = divmod(m, 60)
        s = round(s) #Rounds seconds to the nearest whole number
        h = str(h).rjust(2,'0') #covert to strings,
        m = str(m).rjust(2,'0') #adding 0 if necessary to make 
        s = str(s).rjust(2,'0') #each one two digits long
        return "{}:{}:{}".format(h,m,s)
    

    然后只需调用

    pretty_time(end_time-start_time)
    

    (示例:

    In [5]: pretty_time(3600)
    Out[5]: '01:00:00'
    
    In [6]: pretty_time(3500)
    Out[6]: '00:58:20'
    

    )

    (请注意,我没有费心检查超过 24 小时的时间,那只会给你“25:45:21”之类的信息)

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2014-03-20
      • 1970-01-01
      相关资源
      最近更新 更多