2015-03-31 4 views
0

My GPS, с помощью GPSD, плюет назад время в форматеstrptime, формат и сохранение миллисекунды

time_string = '1582-10-04T12:34:56.000Z'

Я могу превратить эту строку в часовой пояс известен datetime объекта с

from datetime import datetime, timedelta, timezone 
timeformat = '%Y-%m-%dT%H:%M:%S.000Z' # ISO8601 
datetime.strptime(time_string, timeformat).replace(tzinfo=(timezone(timedelta(0)))) 

... который прохладный. Я могу, чем манипулировать объектом, добавлять, вычитать, изменять временные интервалы, вычислять временную дельта, включая изменение часового пояса, и т. Д.

Проблема в том, что некоторые аспекты приложения возвращают временную строку с прикрепленными миллисекундами.

time_string = '1582-10-04T12:34:56.123Z'

... и все ад.

.strip('Z') не делает.

timeformat = '%Y-%m-%dT%H:%M:%S < --without .000 или .000Z не работает либо как ни b.strip('.000Z') или их перестановки.

Я не могу найти элегантный способ сохранить миллисекунду (ы), если и когда они возникнут, и проанализировать строку в объекте datetime, соответствующем часовому поясу.

ответ

2

Как насчет замены 000 на %f?

from datetime import datetime, timedelta, timezone 
time_string = '1582-10-04T12:34:56.123Z' 
timeformat = '%Y-%m-%dT%H:%M:%S.%fZ' 
datetime.strptime(time_string, timeformat).replace(tzinfo=(timezone(timedelta(0)))) 

Выход:

datetime.datetime(1582, 10, 4, 12, 34, 56, 123000, tzinfo=datetime.timezone.utc) 

см strftime() and strptime() Behavior формата %f.

+0

Кровавый ад. Я так много раз заглядывал. Благодарю. – Nodak

Смежные вопросы