Конвертируем строку времени (в микросекундах) в дату и время

Я долго боролся с этим, используя strftime(), который поддерживает %f (для вывода микросекунд), а не strptime(). Этот метод не подчиняется интуиции, но, к счастью, в версии 2.6 его пофиксили:

$ python2.6
>>> import datetime
>>> datetime.datetime.strptime('22:57:39.101941', '%H:%M:%S.%f')
datetime.datetime(1900, 1, 1, 22, 57, 39, 101941)

Но на моих серверах у меня всё ещё стоит версия 2.5, что мне делать?

Я нашёл хороший ответ на этот вопрос на StackOverflow:

$ python2.5
>>> from dateutil.parser import parser
>>> p = parser()
>>> p.parse('22:57:39.101941')
datetime.datetime(2021, 2, 3, 22, 57, 39, 101941)

В этом коде стоит текущая дата (вместо 1900-01-01), поэтому у него правильно распознаны микросекунды (так как мне нужна разница во времени, мне нравится этот вариант).

Ответить