Python strptime无法解析时区EST%z

时间:2019-10-24 10:10:53

标签: python python-3.x datetime python-3.7 strptime

我正在尝试使用Python 3.7将字符串'10 / 23/2019 6:02:05 PM EST'解析为具有时区的日期时间。

代码:

from datetime import datetime
timestamp = datetime.strptime(date_str, '%m/%d/%Y %I:%M:%S %p %Z')

错误:

ValueError: time data '10/23/2019 6:02:05 PM EST' does not match format '%m/%d/%Y %I:%M:%S %p %Z'

当我创建一个日期时间并使用相同的格式输出它时,我得到了正确的输出。唯一的区别是小时前有一个0,但在日期字符串中的6之前加上0会导致相同的错误。

我当前的解决方案是解析不带时区的日期时间,然后对其进行本地化,但这并不理想。

date_lst = date.split()
date_str = ' '.join(date_lst[0:3])
timestamp = datetime.strptime(date_str, '%m/%d/%Y %I:%M:%S %p')
new_tz = pytz.timezone(date_lst[3])
timestamp_tz = new_tz.localize(timestamp)```

2 个答案:

答案 0 :(得分:1)

尝试

>>timestamp = datetime.strptime('10/23/2019 6:02:05 PM EST', '%m/%d/%Y %I:%M:%S %p EST')

>>2019-10-23 06:02:05

很抱歉,如上所述,这不是bug。

答案 1 :(得分:0)

可以合理地预期,分析包含时区的字符串会产生时区感知的datetime对象。