我正在尝试使用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)```
答案 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对象。