不理解解析日期字符串的ValueError

时间:2018-05-18 18:55:20

标签: python strptime

由于某种原因,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

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

编辑:发现它的时区但不确定原因:

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"))

返回ValueError

1 个答案:

答案 0 :(得分:2)

Python时间处理在时区处理部门一直很轻松(这是一个复杂的问题)。您可以从标准库中提供的抽象基类实现您自己的派生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) 从操作系统命令行安装它。

{{1}}