Преобразовать строку ЧЧ: ММ: СС.micro в микросекунды? - PullRequest
0 голосов
/ 27 апреля 2018

Я уверен, что должен быть лучший способ преобразовать строку типа 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 голосов
/ 27 апреля 2018
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. Теперь мы можем взять total_seconds(). Умножьте на 1000, и вы получите ответ (как число с плавающей запятой).

0 голосов
/ 27 апреля 2018

Это только один способ, используя только 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
0 голосов
/ 27 апреля 2018

Если вы не против сторонних библиотек, pandas.Timedelta может быть полезно для вас:

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

Возвращает: 251723.0

...