You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Python中将多种格式的日期统一转换为dd-mm-yyyy格式?

解决多种日期格式转统一dd-mm-yyyy的问题

碰到这种多格式日期的转换需求,最靠谱的方式是枚举所有可能的输入格式,逐个尝试解析,成功后再转换成目标格式。毕竟日期格式的歧义性挺高的,通用解析工具容易踩坑,指定格式反而更稳妥。

具体实现步骤:

  1. 导入Python的datetime模块(处理日期解析和格式化)
  2. 定义所有可能的输入格式列表,覆盖你给出的所有日期样式
  3. 写一个转换函数,遍历格式列表尝试解析,成功后输出目标格式;如果都不匹配,返回提示或原字符串

完整代码示例:

import datetime
# 如果你系统默认locale不是英文,需要设置一下才能解析apr这种月份缩写
# import locale
# locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')

def convert_to_ddmmyyyy(date_str):
    # 枚举所有可能的输入格式,顺序不影响,但尽量覆盖全
    possible_formats = [
        "%d-%m-%Y",      # 匹配 "30-4-1994"
        "%Y-%d-%m",      # 匹配 "1994-30-04"
        "%d/%m/%Y",      # 匹配 "30/04/1994"
        "%d-%b-%Y",      # 匹配 "30-apr-1994"
        "%d/%b/%Y",      # 匹配 "30/apr/1994"
        "%Y-%d-%b"       # 匹配 "1994-30-apr"
    ]
    
    for fmt in possible_formats:
        try:
            # 尝试用当前格式解析日期字符串
            date_obj = datetime.datetime.strptime(date_str, fmt)
            # 转换成目标格式 dd-mm-yyyy
            return date_obj.strftime("%d-%m-%Y")
        except ValueError:
            # 当前格式不匹配,跳过继续试下一个
            continue
    # 如果所有格式都失败,返回自定义提示或原字符串
    return f"⚠️ 无法解析日期: {date_str}"

# 测试你的日期列表
list1 = ["30-4-1994", "1994-30-04", "30/04/1994", "30-apr-1994", "30/apr/1994","1994-30-apr"]
converted_list = [convert_to_ddmmyyyy(date) for date in list1]

print("转换后的日期列表:")
for original, converted in zip(list1, converted_list):
    print(f"{original} → {converted}")

代码说明:

  • %d代表两位日期(不足补0),%m代表两位月份,%Y代表四位年份,%b代表英文月份缩写(比如apr对应4月)
  • 每个格式对应你列表里的一种日期样式,确保没有遗漏
  • try-except捕获解析失败的情况,继续尝试下一个格式
  • 如果你的系统默认语言不是英文,记得打开代码里的locale设置,否则%b无法识别apr这种缩写

运行这段代码后,所有日期都会被转换成30-04-1994这个统一格式。

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

火山引擎 最新活动