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

如何实现Python函数兼容三种日期格式转换为YYYY-MM-DD?

解决多格式日期转换为YYYY-MM-DD的Python函数

嘿,我来帮你搞定这个多格式日期转换的需求!要同时兼容YYYY-MM-DD、YYYY/MM/DD和DD.MM.YYYY三种格式,有两种实用的方法,一种是借助第三方库快速实现,另一种是纯标准库方案,避免额外依赖。

方法一:用python-dateutil自动识别格式

这个库的日期解析器非常智能,能自动识别绝大多数常见的日期格式,省得我们自己写一堆判断逻辑。

首先得先安装库:

pip install python-dateutil

然后编写函数:

from dateutil import parser

def standardize_date(date_str):
    try:
        # dayfirst=True 是为了让解析器优先识别DD.MM.YYYY这种日在前的格式
        parsed_date = parser.parse(date_str, dayfirst=True)
        return parsed_date.strftime("%Y-%m-%d")
    except ValueError:
        return "无效的日期格式,请检查输入"

为什么用dayfirst=True?

因为当遇到DD.MM.YYYY这种格式时,解析器会知道先处理日再处理月;而对于YYYY开头的格式,这个参数不会造成干扰——毕竟四位数的年份很容易被识别出来。

方法二:纯标准库方案(无需额外安装)

如果你不想依赖第三方库,可以手动定义支持的格式列表,逐个尝试解析:

from datetime import datetime

def standardize_date(date_str):
    # 列出所有需要支持的日期格式
    supported_formats = ["%Y-%m-%d", "%Y/%m/%d", "%d.%m.%Y"]
    
    for fmt in supported_formats:
        try:
            # 尝试用当前格式解析日期,成功就转成目标格式返回
            return datetime.strptime(date_str, fmt).strftime("%Y-%m-%d")
        except ValueError:
            # 当前格式解析失败,继续试下一个
            continue
    
    # 所有格式都试遍了还是失败,返回错误提示
    return "无效的日期格式,请检查输入"

测试一下

这两个函数都能处理以下测试用例:

  • standardize_date("2023-10-05") → 返回 "2023-10-05"
  • standardize_date("2023/10/05") → 返回 "2023-10-05"
  • standardize_date("05.10.2023") → 返回 "2023-10-05"

如果输入的是无效日期(比如31.04.2023,四月没有31天),函数会返回错误提示,你也可以根据需求修改异常处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:35:41