【问题标题】:datetime.strptime unexpected behavior - locale issuedatetime.strptime 意外行为 - 语言环境问题
【发布时间】:2016-07-11 09:15:10
【问题描述】:

想知道是否有人可以解决我在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)

【问题讨论】:

  • %b 对区域设置敏感...区域设置是否不同...?
  • @deceze 我可以使用什么优雅的 python 命令来获取语言环境?
  • 见注(1)docs.python.org/2/library/…:locale.getlocale()

标签: python datetime strptime


【解决方案1】:

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

确实,问题出在机器的语言环境上。

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

解决方案很简单,只需在验证证书之前在机器上设置区域设置即可。

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

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多