dateparser.parse处理小于13的日期值时出现日月互换问题
问题原因
你调用dateparser.parse的传参方式有误,该方法第二个参数为配置字典,而非直接传入日期格式字符串。你传入的d/M/yyyy参数并未生效,dateparser会自动推断日期格式:当日、月数值均小于13时,默认优先按月/日/年的常见北美格式解析,因此出现日月互换;当日期数值大于13时,系统可自动识别出该字段为日,因此结果符合预期。
解决方法
在settings参数中通过DATE_FORMATS字段明确指定你的日期格式即可,示例代码如下:
import dateparser # 明确指定日期格式为d/M/YYYY res1 = dateparser.parse('13/11/1990', settings={'DATE_FORMATS': ['d/M/YYYY']}) print(res1) # 输出:1990-11-13 00:00:00 res2 = dateparser.parse('8/9/1990', settings={'DATE_FORMATS': ['d/M/YYYY']}) print(res2) # 输出:1990-09-08 00:00:00
如果你的所有待解析日期都为日/月/年顺序,也可以通过配置PREFER_DAY_FIRST参数全局生效,避免每次指定格式:
# 全局优先按日/月/年顺序解析 dateparser.parse('8/9/1990', settings={'PREFER_DAY_FIRST': True})
内容的提问来源于stack exchange,提问作者Vikas Kumar
相关产品推荐
相关产品推荐

