将可读的日期和时间字符串转换为 Python 中的日期时间对象

Converting a readable date & time string to a datetime object in Python

我正在尝试使用 strptime 将 "Mar 15, 2016 10:47:15" 等日期和时间字符串转换为 Python 日期时间对象。我相信我的格式正确,但是当我 运行 以下内容时,我仍然会收到 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'

关于我的格式字符串可能有什么问题有什么想法吗?

格式字符串中的第二项 (%m) 指的是月份。将其更改为 %d 将使您的代码正常工作。

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

以下是strptime documentation的相关部分:

%d Day of the month as a zero-padded decimal number. 01, 02, ..., 31

%m Month as a zero-padded decimal number. 01, 02, ..., 12

月份名称是特定于区域设置的。如果您想使用为应用程序英语语言环境设置的英文月份名称,例如 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,意思是天。