字符串到日期 - 格式字符串问题



我需要将以下格式的日期转换为不同的格式以用于显示目的。但在此之前,我正在尝试将字符串中的日期转换为时间对象,但无法这样做。

>>> time.strptime("Thu Mar 13 23:15:13 2014 EDT", '%a %b %d %H:%M:%S %Y %Z')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib64/python2.4/_strptime.py", line 293, in strptime
    raise ValueError("time data did not match format:  data=%s  fmt=%s" %
ValueError: time data did not match format:  data=Thu Mar 13 23:15:13 2014 EDT  fmt=%a %b %d %H:%M:%S %Y %Z

进行了反复试验,是"%Z"导致了问题,下面工作正常(仅删除了%Z)

>>> time.strptime("Thu Mar 13 23:15:13 2014", '%a %b %d %H:%M:%S %Y')
(2014, 3, 13, 23, 15, 13, 3, 72, -1)

Python wiki (https://docs.python.org/2/library/time.html) 说时区说明符是 %Z,那么这里有什么问题。请帮我找到。

蟒蛇版本:2.4.3

来自 Python 文档。 https://docs.python.org/2/library/time.html#time.strptime

对 %Z 指令的支持基于 tzname 中包含的值以及日光是否为真。因此,它是特定于平台的,除了识别始终已知的 UTC 和 GMT(并且被认为是非夏令时时区)。

这基本上是说time.strptime()只会识别time.tzname中列出的时区

希望这有帮助

%z仅适用于Python 3.x中的数字时区,以下是Python 2.x的修复程序:

而不是使用:

datetime.strptime(t,'%Y-%m-%dT%H:%M %z')

使用timedelta来说明时区,如下所示:

from datetime import datetime,timedelta
def dt_parse(t):
    ret = datetime.strptime(t[0:16],'%Y-%m-%dT%H:%M')
    if t[18]=='+':
        ret+=timedelta(hours=int(t[19:22]),minutes=int(t[23:]))
    elif t[18]=='-':
        ret-=timedelta(hours=int(t[19:22]),minutes=int(t[23:]))
    return ret

相关内容

  • 没有找到相关文章

最新更新