我正在阅读python
脚本中的日志文件,我有一个startTimes
和endTimes
元组列表 -
('[19:49:40:680]', '[19:49:49:128]')
('[11:29:10:837]', '[11:29:15:698]')
('[11:30:18:291]', '[11:30:21:025]')
('[11:37:44:293]', '[11:38:02:008]')
('[11:39:14:897]', '[11:39:21:572]')
('[11:42:19:968]', '[11:42:22:036]')
('[11:43:18:887]', '[11:43:19:633]')
('[11:44:26:533]', '[11:49:29:274]')
('[11:55:03:974]', '[11:55:06:372]')
('[11:56:14:096]', '[11:56:14:493]')
('[11:57:08:372]', '[11:57:08:767]')
('[11:59:26:201]', '[11:59:27:438]')
如何以毫秒为单位来区分时间?
答案 0 :(得分:7)
>>> import datetime
>>> a = ('[19:49:40:680]', '[19:49:49:128]')
>>> start = datetime.datetime.strptime(a[0][:-1]+"000", "[%H:%M:%S:%f")
>>> end = datetime.datetime.strptime(a[1][:-1]+"000", "[%H:%M:%S:%f")
>>> delta = end-start
>>> ms = delta.seconds*1000 + delta.microseconds/1000
>>> ms
8448.0
如果时钟在午夜环绕,这甚至可以工作:
>>> a = ('[23:59:59:000]','[00:00:01:000]')
>>> # <snip> see above
>>> ms = delta.seconds*1000 + delta.microseconds/1000
>>> ms
2000.0
答案 1 :(得分:3)
您可以尝试使用datetime包。 (http://docs.python.org/library/datetime.html)
首先阅读每个strftime的时间。 (http://docs.python.org/library/datetime.html#strftime-strptime-behavior)
然后减去它们,这应该给你一个timedeltaobject(http://docs.python.org/library/datetime.html#datetime.timedelta),你会在其中找到你的毫克。
答案 2 :(得分:3)
我认为看看这是否可以在oneliner中完成会很有趣。是的,它可以(为了可读性的微弱尝试而分开):
interval = ('[19:49:40:680]', '[19:49:49:128]')
import datetime
(lambda td:
(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**3)\
(reduce(
lambda a, b: b - a,
[datetime.datetime.strptime(t[1:-1] + '000', '%H:%M:%S:%f')
for t in interval]))
这是Python 2.6。在2.7中,可以使用timedelta.total_seconds()
缩短它。在Python 3中,必须从某处导入reduce()
函数。