如何解析带WET时区的日期时间字符串?解决strptime匹配报错问题
解决datetime.strptime解析带WET时区的报错
Python标准库的datetime.strptime里的%Z指令对时区缩写支持有限,仅能识别系统本地时区的标准缩写,WET(西欧时间)这类缩写不在默认匹配列表中,所以会触发格式不匹配的报错。
方案1:手动处理时区信息
仅解析日期时间(忽略时区)
如果不需要保留时区信息,可以直接剥离字符串中的时区部分:
import datetime document_updated_on = '01-Feb-2024#15:22 WET' # 拆分字符串,只保留日期时间部分 dt_segment = document_updated_on.split(' ')[0] format_str = "%d-%b-%Y#%H:%M" updated_on_date = datetime.datetime.strptime(dt_segment, format_str) print(updated_on_date)
保留时区信息
手动映射时区缩写到对应的UTC偏移,构建带时区的datetime对象:
import datetime document_updated_on = '01-Feb-2024#15:22 WET' # 拆分日期时间字符串和时区缩写 dt_str, tz_abbr = document_updated_on.split(' ') format_str = "%d-%b-%Y#%H:%M" dt = datetime.datetime.strptime(dt_str, format_str) # 定义时区缩写与UTC偏移的映射 tz_mapping = { 'WET': datetime.timezone.utc, 'WEST': datetime.timezone(datetime.timedelta(hours=1)) } # 为datetime对象添加时区信息 dt_with_timezone = dt.replace(tzinfo=tz_mapping[tz_abbr]) print(dt_with_timezone)
方案2:使用第三方库简化解析
python-dateutil的parser模块支持更多时区缩写,无需手动指定格式:
- 先安装库:
pip install python-dateutil
- 解析代码:
from dateutil import parser document_updated_on = '01-Feb-2024#15:22 WET' # 将#替换为空格,提升parser的识别兼容性 updated_on_date = parser.parse(document_updated_on.replace('#', ' ')) print(updated_on_date)
内容的提问来源于stack exchange,提问作者Tino
相关产品推荐
相关产品推荐

