2016-03-16 58 views
0

我試圖使用strptime將日期和時間字符串(如「2016年3月15日10:47:15」)轉換爲Python日期時間對象。我相信我有這個格式正確,但是我仍然獲得了ValueError異常,當我運行如下:在Python中將可讀的日期和時間字符串轉換爲日期時間對象

>>> s = "Mar 15, 2016 10:47:15" 
>>> datetime.datetime.strptime(s,"%b %m, %Y %H:%M:%S") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime 
    (data_string, format)) 
ValueError: time data 'Mar 15, 2016 10:47:15' does not match format '%b %m, %Y %H:%M:%S' 

任何想法,什麼可能是錯了我的格式字符串?

回答

1

格式字符串中的第二項(%m)是指月份。將其更改爲%d將使您的代碼正常工作。

datetime.datetime.strptime(s,"%b %d, %Y %H:%M:%S") 

以下是相關部分從strptime documentation:每月的

%d日作爲零填充十進制數。 01,02,...,31

%月爲零填充十進制數。 01,02,...,12

+0

呃,不敢相信我錯過了!乾杯 –

0

月份名稱是區域設置特定的。如果您想使用英語月份名稱設置爲應用程序基於英語的語言環境,如en_US

$ env LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 python 
    >>> import datetime 
    >>> s = "Mar 15, 2016 10:47:15" 
    >>> datetime.datetime.strptime(s,"%b %d, %Y %H:%M:%S") 
    datetime.datetime(2016, 3, 15, 10, 47, 15) 

P.S. %m替換爲%d,表示一天。

相關問題