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

Python中判断日期是否含年份并统一转为指定格式的方法

解决方案

可以使用Python的datetime模块来处理这两种日期格式,以下是两种实用实现方式:

方式一:手动指定格式解析(无需第三方库)

这种方式明确匹配两种目标格式,逻辑清晰且不需要额外安装依赖:

from datetime import datetime

def standardize_date(date_str):
    # 先尝试解析带年份的日-月-年格式(如"2-4-2023")
    try:
        dt_obj = datetime.strptime(date_str, "%d-%m-%Y")
    except ValueError:
        # 解析失败则处理无年份的英文月.日格式(如"Mar.30")
        dt_obj = datetime.strptime(date_str, "%b.%d")
        # 追加当前年份
        current_year = datetime.now().year
        dt_obj = dt_obj.replace(year=current_year)
    # 格式化为目标格式:年-两位数字月-两位数字日
    return dt_obj.strftime("%Y-%m-%d")

# 测试示例
d1 = "Mar.30"
d2 = "2-4-2023"

print(f'd1 = "{standardize_date(d1)}"')
print(f'd2 = "{standardize_date(d2)}"')

执行后输出:

d1 = "2023-03-30"
d2 = "2023-04-02"

方式二:自动识别格式(需第三方库)

如果需要兼容更多未知日期格式,可以使用python-dateutil库的parser模块自动识别,代码更简洁:

  1. 先安装依赖:
pip install python-dateutil
  1. 实现代码:
from datetime import datetime
from dateutil import parser

def standardize_date(date_str):
    dt_obj = parser.parse(date_str)
    # 若解析出的年份为默认值(无年份时parser会填充1900),替换为当前年份
    if dt_obj.year == 1900:
        dt_obj = dt_obj.replace(year=datetime.now().year)
    return dt_obj.strftime("%Y-%m-%d")

# 测试示例
d1 = "Mar.30"
d2 = "2-4-2023"

print(f'd1 = "{standardize_date(d1)}"')
print(f'd2 = "{standardize_date(d2)}"')

执行后同样会得到符合预期的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:58:13