2015-03-31 25 views
0

我的GPS,吐回時間格式strptime,格式和通過GPSD保存毫秒

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 < .000 --without或.000Z 不起作用或者作爲既不b.strip('.000Z')或置換物。

我似乎無法找到一個優雅的方式來保存毫秒(s),如果,當它們發生時,並將字符串解析成時區感知日期時間對象。

回答

2

如何用%f替換000

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 2015-04-01 02:43:42