即時通訊使用以下工作原理將UTC字符串轉換爲日期時間 - 除非毫秒數大於6位數。比它吹。 urgh * &^* &python strptime從UTC字符串到datetime正則表達式re.sub
format = '%Y-%m-%dT%H:%M:%S'
if '.' in value:
format = format + '.%f'
if value.endswith('Z'):
format = format + 'Z'
return datetime.strptime(value, format)
這裏是堆棧跟蹤
File "/usr/lib64/python2.6/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '2013-07-19T13:02:53.8241899Z' does not match format '%Y-%m-%dT%H:%M:%S.%fZ'
最新的方法,以限制毫秒到的長度爲6個數字。使用'{:%Y-%m-%dT%H:%M:%S.6%f}'.format( datetime)
,但它有助於隨機數/
所以嘗試使用re.sub()來限制所提供字符串中'.'character後面的小數(如果有)。但我不是非常正確的。
即時通訊在機器上使用python 2.6。*。
你真的需要有6位數字的毫秒? :O – aIKid
如果代碼本身包含'sz'和'value'的值,則此示例代碼片段可能會更好。 –
生成正確的字符串,你可以使用'datetime.utcnow()。isoformat()+'Z''。它看起來像['rfc3339'](http://tools.ietf.org/search/rfc3339#section-5.6)不限制小數點後的位數。所以如果輸入字符串以'Z'結尾,那麼在你的情況下它是一個有效的rfc3339日期。 – jfs