【问题标题】:dateparser.parse is swapping day and month for values less than 13dateparser.parse 将日期和月份交换为小于 13 的值
【发布时间】:2021-12-01 15:44:58
【问题描述】:

所以,我使用 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)

【问题讨论】:

  • 我建议改用dateutil's parser,并设置关键字dayfirst=True。例如。 dateutil.parser.parse('8/9/1990', dayfirst=True)

标签: python python-3.x datetime date-parsing


【解决方案1】:

The documentation 说:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多