减去日期时间对象以获得以毫秒为单位的数值结果(Python)

Yan*_*nis 4 python-3.x python-datetime

尝试从两个包含时间戳且格式为 的字符串中查找经过的时间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
Run Code Online (Sandbox Code Playgroud)

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

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

有什么想法我做错了吗?

小智 6

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

\n\n
from datetime import datetime\n\nelapsed_time = 0\ns = \'13:46:34.550\'\ne = \'13:46:36.750\'\n\n# only interested on the time part, not the date\nstart_time = datetime.strptime(s, \'%H:%M:%S.%f\')\nend_time = datetime.strptime(e, \'%H:%M:%S.%f\')\n\ndiff = end_time - start_time\nelapsed_time = int((diff.seconds * 1000) + (diff.microseconds / 1000))\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

一些参考:

\n\n

Python:两个日期时间之间的差异(以毫秒为单位)(Mark Needham 的博客)

\n\n

关于日期时间的 Python 文档

\n\n

文档中的一些解释(上面链接):

\n\n

在第8.1.4节datetime“对象”中,它指出对于操作:

\n\n
timedelta = datetime1 - datetime2\n
Run Code Online (Sandbox Code Playgroud)\n\n

(对应于本答案中的最后第二行代码):

\n\n
\n

仅当两个操作数均为朴素操作数或均为感知操作数时,才定义datetime从 a 中减去 a 的操作。datetime如果一个人是有觉知的,而另一个人是天真的,TypeError就会被提升。

\n
\n\n

还:

\n\n
\n

在版本 3.3 中更改:朴素实例和感知实例之间的相等比较datetime不会引发\xe2\x80\x99t 问题TypeError

\n
\n