代码之家  ›  专栏  ›  技术社区  ›  Bijan

不理解此值分析日期字符串时出错[重复]

  •  0
  • Bijan  · 技术社区  · 8 年前

    出于某种原因,python没有正确解析我的日期,但我查看了 strftime/strptime behavior 看起来是对的

    import time
    d = 'May 17, 2018 3:10 AM PDT'
    time.mktime(time.strptime(d, "%B %d, %Y %I:%M %p %Z"))
    

    如果我这样做:

    time.strftime("%B %d, %Y %I:%M %p %Z")
    

    我明白了 May 18, 2018 02:47 PM EDT ,除了前导的0之外,它看起来是完全相同的格式,但是 strptime 应该能够分析前导 0 s

    我在分析这个日期时做错了什么?

    编辑:找到时区,但不确定原因:

    time.mktime(time.strptime("May 17, 2018 3:10 AM UTC", "%B %d, %Y %I:%M %p %Z"))
    

    返回一个值

    time.mktime(time.strptime("May 17, 2018 3:10 AM PDT", "%B %d, %Y %I:%M %p %Z"))
    

    返回值错误

    1 回复  |  直到 8 年前
        1
  •  2
  •   martineau    8 年前

    Python日期处理在时区处理部门总是有点轻(这是一个复杂的问题)。您可以实现自己的派生 tzinfo 从标准库中提供的抽象基类初始化,如果您只需要处理其中的一小部分,我以前做过,这并不难 你可以使用第三方 dateutil 文档末尾推荐的模块 tzinfo section 处理的数量要大得多。

    无论如何,你可以 dateutil 从…起 here 或者,您可以使用以下命令从操作系统命令行安装它: pip install py-dateutil

    from dateutil import parser
    
    t = parser.parse('May 17, 2018 3:10 AM PDT')
    print('t: {!r}'.format(t))  # -> t: datetime.datetime(2018, 5, 17, 3, 10)