首页 > 解决方案 > dateparser.parse 将日期和月份交换为小于 13 的值

问题描述

所以,我使用 dateparser.parse 来提取年、月和日。对于大于 13 的值,它可以正常工作。但是,对于小于 13 的值,它会交换日期和月份。例如,在 DD/MM/YYYY 格式中,如果输入是 1990 年 11 月 13 日,则输出如预期的月份 -> 11 和日 -> 13。但如果输入是 8/9/1990,则输出为月 -> 8 和日 -> 9。

dateparser.parse('13/11/1990','d/M/yyyy')
datetime.datetime(1990, 11, 13, 0, 0)

dateparser.parse('8/9/1990','d/M/yyyy')
datetime.datetime(1990, 8, 9, 0, 0)

标签: pythonpython-3.xdatetimedate-parsing

解决方案


文档说:

dateparser.parse(date_string, date_formats=None, ...)
  • date_formats( list ) – 使用此处给出的指令的格式字符串列表。解析器会一一应用格式,同时考虑到检测到的语言/区域设置。

您既没有提供格式字符串作为列表,也没有遵循链接格式。它应该看起来像这样:

dateparser.parse('8/9/1990', ['%d/%m/%Y'])

推荐阅读