代码之家  ›  专栏  ›  技术社区  ›  Inbar Rose

日期时间。strptime意外行为-区域设置问题

  •  1
  • Inbar Rose  · 技术社区  · 8 年前

    想知道是否有人能解决我遇到的一个奇怪错误 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 回复  |  直到 8 年前
        1
  •  3
  •   Community CDub    7 年前

    幸亏 deceze's comment 我找到了解决这个问题的办法。

    事实上,问题在于机器的位置。

    (在某些背景下,我在一台机器上验证证书,机器的语言环境与证书的时间戳不同)

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

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