Python:如何将"Fri Jun 05 15:59:14 PDT 2020"转为datetime对象
解决日期字符串转datetime对象的问题
你的问题出在Python标准库strptime的%Z指令对时区缩写(比如PDT)的兼容性上——不同系统的时区数据库支持的缩写有限,尤其是Windows系统,会导致解析失败。以下是几种可行的解决方法:
方法一:使用dateutil.parser自动解析(推荐)
这个第三方库能自动识别大多数日期格式,包括时区缩写,无需手动指定格式:
from dateutil import parser date_str = "Fri Jun 05 15:59:14 PDT 2020" dt = parser.parse(date_str) print(dt) # 输出:2020-06-05 15:59:14-07:00
需要先安装库:pip install python-dateutil
方法二:手动处理时区(无需第三方库)
如果不想依赖第三方库,可以先剥离时区缩写,解析剩余部分后再手动添加上时区信息:
from datetime import datetime from zoneinfo import ZoneInfo # Python 3.9+ 可用;3.9以下版本改用pytz date_str = "Fri Jun 05 15:59:14 PDT 2020" # 拆分字符串,移除PDT部分 date_parts = date_str.split() date_no_tz = ' '.join(date_parts[:3] + date_parts[4:]) # 解析无时区的日期字符串 dt_naive = datetime.strptime(date_no_tz, '%a %b %d %H:%M:%S %Y') # 添加上时区(PDT对应America/Los_Angeles时区) dt = dt_naive.replace(tzinfo=ZoneInfo("America/Los_Angeles")) print(dt) # 输出:2020-06-05 15:59:14-07:00
如果用pytz,替换ZoneInfo的部分为:
import pytz dt = dt_naive.replace(tzinfo=pytz.timezone("America/Los_Angeles"))
内容的提问来源于stack exchange,提问作者Rehan Shikkalgar
相关产品推荐
相关产品推荐

