对接Oracle PMS时的Python日期解析问题
解析Oracle PMS日期字符串的Python方案
针对你遇到的GA090616/GD090617这类日期格式,核心是处理无分隔符的6位MMDDYY(月-日-年)字符串,以下是可行的解析方案:
基础单日期解析
先处理单个6位日期字符串(比如090616),使用datetime.strptime指定对应格式符即可:
from datetime import datetime # 6位日期字符串(MMDDYY格式) raw_date = "090616" # 解析为date对象:%m=两位月份,%d=两位日期,%y=两位年份 date_obj = datetime.strptime(raw_date, "%m%d%y").date() # 格式化为你需要的"MM-DD-YY"样式 formatted_date = date_obj.strftime("%m-%d-%y") print(formatted_date) # 输出: 09-06-16
批量提取PMS消息中的日期
如果需要从完整的PMS消息(比如|GA090616|GD090617|)中自动提取所有GA/GD对应的日期,可以结合正则表达式:
from datetime import datetime import re pms_message = "|GA090616|GD090617|" # 匹配GA或GD开头的6位日期数字 date_pattern = re.compile(r'G[AD](\d{6})') matches = date_pattern.findall(pms_message) # 批量解析并格式化 for raw_date in matches: date_obj = datetime.strptime(raw_date, "%m%d%y").date() print(date_obj.strftime("%m-%d-%y")) # 输出结果: # 09-06-16 # 09-06-17
关键说明
- 你之前的方案失败原因是使用了带分隔符的
%d/%m/%y格式,而当前日期字符串是无分隔符的MMDDYY顺序,必须对应使用%m%d%y格式符 - 若后续确认日期顺序是
DDMMYY(日-月-年),只需将格式符改为%d%m%y即可 strptime会自动将两位年份16补全为2016,如果需要处理更早的年份(比如99对应1999),可以额外补充年份逻辑
内容的提问来源于stack exchange,提问作者M.Abdullah Iqbal
相关产品推荐
相关产品推荐

