python - 计算时间

我在这里有两件事要做,

  1. 打印开始时间和结束时间。
  2. 计算时间。
import datetime
import re

logs = "432894u2398 start 7:00:00.100" , "432894u2398 end 7:03:24.400"

start_regex = r'start\s(\d+:\d+:\d+.\d+)'

end_regex = r'end\s(\d+:\d+:\d+.\d+)'


for line in logs:
    sr = re.search(start_regex, line)
    er = re.search(end_regex, line)
    if sr:
        print(f'transaction start time is: {sr.group(1)}')
    if er:
        print(f'transaction end time is: {er.group(1)}')

如何计算它们之间的时间差?

回答1

import datetime
import re

start, end = "432894u2398 start 7:00:00.100" , "432894u2398 end 7:03:24.400"

get_time_string = lambda s: re.split(r"(start|end) ", s)[2]
to_date = lambda s: datetime.datetime.strptime(get_time_string(s), '%H:%M:%S.%f')

delta = to_date(end) - to_date(start)
print(delta)
## 0:03:24.3000000

回答2

如果您知道日志消息始终采用相同的格式,您可以通过以下方式让您的生活更轻松:

from datetime import datetime

# Get the times out of the log message and parse them
start, end = list(map(lambda x: datetime.strptime(x.rsplit(" ")[1], "%H:%M:%S.%f"), logs))
# Calculate duration by subtracting datetimes
duration = end - start

相似文章

kotlin - 使用 Kotlin 按多个条件排序

我们想按三个不同的标准对对象进行排序,具有较高优先级的标准会覆盖下一个):状态字段时间场排序字段status是枚举并且有一个自定义的sorting,我们通过一个比较器来实现。(未知,打开,关闭,)so...