Python strTime未分析时区EST%z
我试图使用Python 3.7将字符串“10/23/2019 6:02:05 PM EST”解析为带时区的日期时间 代码: 错误:Python strTime未分析时区EST%z,python,python-3.x,datetime,python-3.7,strptime,Python,Python 3.x,Datetime,Python 3.7,Strptime,我试图使用Python 3.7将字符串“10/23/2019 6:02:05 PM EST”解析为带时区的日期时间 代码: 错误: 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会导致相同的错误 我目前的解决方案是在没
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会导致相同的错误
我目前的解决方案是在没有时区的情况下解析datetime,然后对其进行本地化,但这并不理想
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)```
试试看
您可以尝试此方法。合理的预期是,解析包含时区的字符串将生成一个时区感知的datetime对象。这种格式似乎适用于UTC,但其他时区没有尝试过EST、CST、IST。这会忽略时区并生成一个时区初始日期时间,除非输入EST以外的时区,否则不会出错,但也不会正确传递时间戳,因为它没有传递时区。
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)```
>>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