将HH:MM:SS.micro字符串转换为微秒?

时间:2018-04-27 19:44:22

标签: python datetime time timedelta

我确定必须有更好的方法将像00:04:11.723这样的字符串转换为这样的微秒:

ms = timestring.split('.')
pt = ms[0].split(':')
sec = int(pt[0]) * 3600 + int(pt[1]) * 60 + int(pt[2])
st = sec * 1000 + int(ms[1])
但是我却找不到它。

3 个答案:

答案 0 :(得分:4)

这是仅使用datetime.timedelta的一种方式:

from datetime import timedelta

x = '00:04:11.723'

h, m, s = map(float, x.split(':'))
res = timedelta(hours=h, minutes=m, seconds=s).total_seconds() * 1000

# 251723.0

答案 1 :(得分:2)

如果您不反对第三方库,pandas.Timedelta可能对您有用:

import pandas as pd
pd.Timedelta(timestring).total_seconds()*1000

返回:251723.0

答案 2 :(得分:2)

from datetime import datetime

timezero = datetime.strptime('00:00:00.000', '%H:%M:%S.%f')
(datetime.strptime('00:04:11.723', '%H:%M:%S.%f') - timezero).total_seconds() * 1000

基本思想是使用strptime()来解析字符串以获取datetime对象。由于datetime个对象在总秒数上没有很好的方法,但是timedelta确实如此,我们会减去另一个datetime,这会产生timedelta我们&#39}。正在寻找。现在我们可以total_seconds()。乘以1000得到答案(作为浮点数)。