Python多格式日期转换为YYYY/MM/DD格式问题求助
解决dateutil.parser解析日/月/年格式日期的歧义问题
嘿,我完全懂你遇到的困扰!dateutil.parser虽然好用,但它默认会根据常见的日期格式习惯(比如美式的MM/DD/YYYY)来猜测结构,当碰到像03/04/2018这种两种解读都合理的日期时,就会优先按美式格式解析,导致结果不符合你的预期。
解决方案:指定dayfirst=True参数
你只需要在调用parse方法时加上dayfirst=True,明确告诉解析器优先把第一个数字当作日期,这样就能统一按日/月/年的规则解析了:
from dateutil.parser import parse # 解析日/月/年格式的日期,指定dayfirst=True a = parse("03/04/2018", dayfirst=True) final_date = a.strftime('%y/%m/%d') # 按你需要的两位年格式输出 print(final_date) # 输出:18/04/03,符合预期 # 测试另一个日期也能正常工作 a = parse("19/04/2018", dayfirst=True) final_date = a.strftime('%y/%m/%d') print(final_date) # 输出:18/04/19,和之前的正确结果一致
额外小提示
如果你的场景更复杂,比如存在多种完全不同的日期格式,可能需要针对每种格式用datetime.strptime来精准匹配,但对于大部分日在前的日期解析场景,dayfirst=True已经足够解决问题啦。
内容的提问来源于stack exchange,提问作者Piyush S. Wanare
相关产品推荐
相关产品推荐

