ValueError时间数据'Fri Mar 11 15:59:57 EST 2016'与格式'%a%b%d%H:%M:%S%Z%Y'不匹配

Jon*_*eed 5 python datetime strptime

我试图从以下日期创建一个日期时间对象:'Fri Mar 11 15:59:57 2016 2016'使用格式:'%a%b%d%H:%M:%S%Z%Y' .

这是代码.

from datetime import datetime
date = datetime.strptime('Fri Mar 11 15:59:57 EST 2016', '%a %b %d %H:%M:%S %Z %Y')
Run Code Online (Sandbox Code Playgroud)

但是,这会导致ValueError,如下所示.

ValueError: time data 'Fri Mar 11 15:59:57 EST 2016' does not match format '%a %b %d %H:%M:%S %Z %Y'
Run Code Online (Sandbox Code Playgroud)

也许我错过了我的格式字符串明显错误的东西,但我一遍又一遍地检查它.非常感谢任何帮助,谢谢.

编辑以反映评论/问题以获取更多信息:

我正在使用的Python版本是2.7.6.

在Ubuntu 14.04上使用'locale'命令我得到这个:

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

eca*_*mur 11

对于%Z说明符,strptime仅识别"UTC","GMT"以及其中的任何内容time.tzname(因此,它是否识别"EST"将取决于您的计算机的时区).这是问题22377.

请参阅:Python strptime()和时区?在Python中解析带有timezone缩写名称的日期/时间字符串?

解析包含人类可读时区的时区的最佳选择仍然是使用第三方python-dateutil库:

import dateutil
date = dateutil.parse('Fri Mar 11 15:59:57 EST 2016')
Run Code Online (Sandbox Code Playgroud)

如果你不能安装python-dateutil,你可以去除时区并手动解析它,例如使用字典查找.