You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dateutil.parser.parse解析日期按需返回精确日期或月末日期

日期格式转换实现方案

直接用dateutil内置的解析能力,不需要手写正则匹配各种零散格式,核心逻辑是判断解析结果里是否识别到了「日」字段,没识别到就自动取当月最后一天即可。

实现代码

先导入依赖模块:

from dateutil.parser import parser
import calendar
from datetime import date

封装通用解析函数:

def parse_custom_date(date_str: str) -> date:
    # 调用内部解析方法,拿到解析值和已识别的字段集合
    parsed_res, detected_fields = parser()._parse(date_str, dayfirst=True)
    year, month = parsed_res.year, parsed_res.month

    # 未识别到日字段,返回当月最后一天
    if detected_fields.day is None:
        month_last_day = calendar.monthrange(year, month)[1]
        return date(year, month, month_last_day)
    # 识别到完整年月日,直接返回精确日期
    return date(year, month, parsed_res.day)

效果验证

对应所有提到的输入场景,返回结果完全符合业务要求:

  • 输入Sept 2022 → 返回2022-09-30(9月最后一天)
  • 输入11/2022 → 返回2022-11-30(11月最后一天)
  • 输入Jul 2022 → 返回2022-07-31(7月最后一天)
  • 输入11/11/2021 → 返回2021-11-11(精确匹配传入的完整日期)

注意事项

  • 代码里dayfirst=True是适配dd/mm/yyyy完整日期格式,如果后续遇到mm/dd/yyyy格式的输入,把这个参数改成False即可
  • 这里用到的_parse是dateutil.parser的内部解析方法,从dateutil 2.x版本至今接口没有变动,覆盖所有支持的日期格式,比自己手写正则适配各种英文月份、分隔符的方案容错率高很多,不需要提前枚举所有可能的输入格式。

内容的提问来源于stack exchange,提问作者Simontaylor Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:27:18