Я могу проанализировать строки, содержащие дату / время с time.strptime
>>> import time
>>> time.strptime('30/03/09 16:31:32', '%d/%m/%y %H:%M:%S')
(2009, 3, 30, 16, 31, 32, 0, 89, -1)
Как я могу разобрать строку времени, которая содержит миллисекунды?
>>> time.strptime('30/03/09 16:31:32.123', '%d/%m/%y %H:%M:%S')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/_strptime.py", line 333, in strptime
data_string[found.end():])
ValueError: unconverted data remains: .123
python
date
time
datetime-parsing
ilkinulas
источник
источник
%f
.%f
дополняется нулями справа (не слева!) До 6 знаков после запятой. 1 анализируется до 100000, 12 - до 120000, а 1234567 производитValueError: unconverted data remains: 7
Я знаю, что это старый вопрос, но я все еще использую Python 2.4.3, и мне нужно было найти лучший способ преобразования строки данных в дату и время.
Решение, если datetime не поддерживает% f и не нуждается в попытке / исключении:
Это работает для входной строки "2010-10-06 09: 42: 52.266000"
источник
dt.replace(microsecond=int(mSecs))
Чтобы дать код, на который ссылается ответ nstehr (из его источника ):
источник
Ответ DNS выше на самом деле неверен. SO спрашивает о миллисекундах, но ответ за микросекунды. К сожалению, Python не имеет директивы для миллисекунд, только микросекунд (см. Документ ), но вы можете обойти это, добавив три нуля в конце строки и проанализировав строку как микросекунды, что-то вроде:
где
time_str
отформатирован как30/03/09 16:31:32.123
.Надеюсь это поможет.
источник
.123
Моей первой мыслью было попытаться передать его «30/03/09 16: 31: 32.123» (с точкой вместо двоеточия между секундами и миллисекундами.) Но это не сработало. Быстрый взгляд на документы показывает, что доли секунды игнорируются в любом случае ...
Ах, различия версий. Это было сообщено как ошибка, и теперь в версии 2.6+ вы можете использовать "% S.% f" для ее анализа.
источник
из списков рассылки python: разбор миллисекундного потока . Там размещена функция, которая, кажется, выполняет свою работу, хотя, как уже упоминалось в комментариях автора, это своего рода хак. Он использует регулярные выражения для обработки возникающего исключения, а затем выполняет некоторые вычисления.
Вы также можете попробовать выполнить регулярные выражения и вычисления заранее, прежде чем передавать их в strptime.
источник
Для Python 2 я сделал это
он печатает время "% H:% M:% S", разбивает time.time () на две подстроки (до и после.) xxxxxxx.xx и, так как .xx мои миллисекунды, я добавляю вторую подстроку к своему "% H:% M:% S»
надеюсь, что это имеет смысл :) Пример вывода:
13: 31: 21.81 КОНЕЦ МЫШИ 01
13: 31: 26,3 Мерцание 01
13: 31: 26.39 КОНЕЦ МЫШИ 01
13: 31: 34.65 Стартовая полоса 01
источник