datetime.strptime 意外行为 - 区域设置问题

datetime.strptime unexpected behavior - locale issue

想知道是否有人有解决我遇到的奇怪错误的方法 datetime.datetime.strptime

注意:不是时区问题的重复。

我遇到这个异常(修剪专有部分):

Traceback (most recent call last):
  ...
  File "/usr/local/lib/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data 'Jul 10 12:45:52 2016' does not match format '%b %d %H:%M:%S %Y'

此异常发生在真实数据的 运行 时间内。但是当我用相同的数据在本地测试它时它能工作吗?!

您甚至可以自己测试,异常本身没有多大意义,因为我实际上可以使用该格​​式来匹配日期时间格式:

>>> from datetime import datetime
>>> s = 'Jul 10 12:45:52 2016'
>>> p = '%b %d %H:%M:%S %Y'
>>> d = datetime.strptime(s, p)
>>> print d
2016-07-10 12:45:52

真的不确定这里发生了什么。任何帮助表示赞赏。 (Python 2.7.11)

多亏了deceze's ,我才能够找到解决这个问题的方法。

确实,问题出在机器的区域设置上。

(对于某些背景,我正在一台机器上验证证书,而该机器的区域设置与证书的时间戳不同)

解决方法很简单,只需在验证证书之前在机器上设置语言环境即可。

locale.setlocale(locale.LC_ALL, 'en_US.utf8')