不明白这个 ValueError parsing a date string
Don't understand this ValueError parsing a date string
出于某种原因 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"))
returns一个值
time.mktime(time.strptime("May 17, 2018 3:10 AM PDT", "%B %d, %Y %I:%M %p %Z"))
returns 值错误
Python 日期处理在时区处理部门一直有点轻(这是一个复杂的问题)。如果您只有一小部分需要处理,您可以从标准库中提供的抽象基础 class 实现自己的派生 tzinfo
class——我已经做到了之前并不太难 — 或 您可以使用 tzinfo
section 末尾文档中推荐的第三方 dateutil
模块之类的东西,它处理他们的数量要多得多。
无论如何,您可以从 here 获得 dateutil
或者您可以简单地从 OS 命令行 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)
出于某种原因 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"))
returns一个值
time.mktime(time.strptime("May 17, 2018 3:10 AM PDT", "%B %d, %Y %I:%M %p %Z"))
returns 值错误
Python 日期处理在时区处理部门一直有点轻(这是一个复杂的问题)。如果您只有一小部分需要处理,您可以从标准库中提供的抽象基础 class 实现自己的派生 tzinfo
class——我已经做到了之前并不太难 — 或 您可以使用 tzinfo
section 末尾文档中推荐的第三方 dateutil
模块之类的东西,它处理他们的数量要多得多。
无论如何,您可以从 here 获得 dateutil
或者您可以简单地从 OS 命令行 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)