我正在尝试转换日期和时间字符串,例如" 2016年3月15日10:47:15"使用strptime进入Python datetime对象。我相信我的格式正确但是当我运行以下内容时仍然会收到ValueError异常:
>>> 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'
关于我的格式字符串可能出错的任何想法?
答案 0 :(得分:1)
格式字符串(%m
)中的第二项是指月份。将其更改为%d
将使您的代码正常工作。
datetime.datetime.strptime(s,"%b %d, %Y %H:%M:%S")
以下是strptime
documentation的相关部分:
%d作为零填充十进制数的月份日期。 01,02,...,31
%m月份为零填充十进制数。 01,02,...,12
答案 1 :(得分: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
,这意味着一天。