我正在尝试从以下日期创建一个日期时间对象:' 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')
但是,这会导致ValueError,如下所示。
ValueError: time data 'Fri Mar 11 15:59:57 EST 2016' does not match format '%a %b %d %H:%M:%S %Z %Y'
也许我错过了我的格式字符串明显错误的东西,但我一遍又一遍地检查了它。非常感谢任何帮助,谢谢。
编辑以反映评论/问题以获取更多信息:
我使用的Python版本是2.7.6。
使用'区域设置'在Ubuntu 14.04上命令我得到了这个:
$ 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=
答案 0 :(得分:9)
对于%Z说明符,time.tzname
仅识别“UTC”,“GMT”以及import dateutil
date = dateutil.parse('Fri Mar 11 15:59:57 EST 2016'
中的任何内容(因此,它是否识别“EST”将取决于您的计算机的时区) 。这是issue 22377。
请参阅:Python strptime() and timezones?和Parsing date/time string with timezone abbreviated name in Python?
解析包含人类可读时区的时区的最佳选择仍然是使用第三方python-dateutil库:
{{1}}
如果你不能安装python-dateutil,你可以去掉时区并手动解析它,例如使用字典查找。