转换可读日期&时间字符串到Python中的datetime对象

时间:2016-03-16 13:40:33

标签: python python-2.7 datetime strptime

我正在尝试转换日期和时间字符串,例如" 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'

关于我的格式字符串可能出错的任何想法?

2 个答案:

答案 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,这意味着一天。