【问题标题】:Subtract datetime objects to get numerical result in milliseconds (Python)减去 datetime 对象以获得以毫秒为单位的数值结果(Python)
【发布时间】:2016-11-06 01:02:17
【问题描述】:

试图从两个包含时间戳且格式为hh:mm:ss.mss 的字符串中查找已用时间。基本上,我想减去两个 datetime 对象并在 毫秒 内得到一个数值结果。

这是我的代码:

from datetime import datetime

elapsed_time = 0
s = '13:46:34.550'
e = '13:46:36.750'

# only interested on the time part, not the date
start_time = datetime.strptime(s, '%H:%M:%S.%f')
end_time   = datetime.strptime(e, '%H:%M:%S.%f')

#elapsed_time = end_time - start_time
#elapsed_time = (end_time - start_time).microsecond

对于两个elapsed_time 计算,我得到一个TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'int'

它应该打印00:00:02.250 或(理想情况下)2200

任何想法我做错了什么?

【问题讨论】:

  • 只是一个小问题,两次之间的差异应该是00:00:02.200,或者理想情况下是2200
  • @DamienPaul 不错,已更正。谢谢

标签: python-3.x python-datetime


【解决方案1】:

以下对我有用(使用 Python 3.5.2):

from datetime import datetime

elapsed_time = 0
s = '13:46:34.550'
e = '13:46:36.750'

# only interested on the time part, not the date
start_time = datetime.strptime(s, '%H:%M:%S.%f')
end_time = datetime.strptime(e, '%H:%M:%S.%f')

diff = end_time - start_time
elapsed_time = int((diff.seconds * 1000) + (diff.microseconds / 1000))

我得到的输出是2200,这是se之间的时间差(以毫秒为单位)

一些参考资料:

Python: Difference between two datetimes in milliseconds(Mark Needham 的博客)

Python docs about datetime

来自文档的一些解释(上面直接链接):

8.1.4 datetime Objects 部分中,它声明对于操作:

timedelta = datetime1 - datetime2

(对应于本答案的倒数第二行):

仅当两个操作数都是幼稚的或两者都知道时,才定义从 datetime 中减去 datetime。如果一个人有意识而另一个人天真,则TypeError 被提出。

还有:

在 3.3 版中更改:幼稚和有意识 datetime 实例之间的平等比较不会引发 TypeError

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    相关资源
    最近更新 更多