2014-10-08 119 views
0

我的字符串,將字符串轉換字符串DateTime對象

str='2014-09-24T15:18:57+0000' 

,我想這個字符串有效的DateTime對象轉換。怎麼做 ?

我想的是什麼,

>>> from datetime import datetime 
>>> datetime.strptime(str,'%Y-%m-%dT%H:%M:%S') 

Traceback (most recent call last): 
    File "<pyshell#9>", line 1, in <module> 
    datetime.strptime(str,'%Y-%m-%dT%H:%M:%S') 
    File "C:\Python27\lib\_strptime.py", line 328, in _strptime 
    data_string[found.end():]) 
ValueError: unconverted data remains: +0000 

但是當我試圖str='2014-09-24T15:18:57'改變字符串它工作正常,

>>> datetime.strptime('2014-09-24T15:18:57','%Y-%m-%dT%H:%M:%S') 
datetime.datetime(2014, 9, 24, 15, 18, 57) 

哪些錯誤與+0000,如何避免第一個錯誤?

回答

0

那麼你有一個字符串,這個模式

2014-09-24T15:18:57+0000 
%Y -%m-%dT%H:%M:%S[ ] 

而你缺少+0000

兩個選項:

  1. 擺脫+0000
  2. 添加的東西到你的圖案
0

試試這個:

import datetime 
dt_str='2014-09-24T15:18:57+0000' 
new_dt = dt_str[:19] 
dt = datetime.datetime.strptime(new_dt, '%Y-%m-%dT%H:%M:%S') 
0

哪些錯誤與+0000,如何避免第一個錯誤?

+0000是UTC偏移,您可以使用%z指令解析它(因爲Python 3.2):

>>> from datetime import datetime 
>>> time_string = '2014-09-24T15:18:57+0000' 
>>> datetime.strptime(time_string, '%Y-%m-%dT%H:%M:%S%z') 
datetime.datetime(2014, 9, 24, 15, 18, 57, tzinfo=datetime.timezone.utc) 

%z不可用在舊的Python版本。如果所有時間戳具有相同的UTC偏移+0000那麼你可以分析它爲:

>>> datetime.strptime(time_string, '%Y-%m-%dT%H:%M:%S+0000') 
datetime.datetime(2014, 9, 24, 15, 18, 57) 

注意:值是一個天真的DateTime對象(無時區信息)。 要附加tzinfo,對於較老的Python版本,請參閱How to parse dates with -0400 timezone string in python?