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

时间:2016-07-11 09:15:10

标签: python datetime strptime

想知道是否有人针对我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)

1 个答案:

答案 0 :(得分:2)

感谢deceze's comment我能够找到解决此问题的方法。

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

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

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

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