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

特殊日期格式转换技术咨询:117/12/31转2017、89/12/31转1989

刚好之前处理过类似的日期格式转换需求,核心逻辑其实很清晰:先拆分出年份部分,再根据规则判断补19还是20前缀,下面给你几种常用工具的具体实现方法,你可以按需选用:

1. Python 实现

用Python处理的话,我们可以写一个简单的函数来封装转换逻辑,步骤很直观:

  • 拆分日期字符串,提取年份、月份、日期
  • 根据年份数值判断补全世纪前缀:三位年份(如117)取后两位加2000,两位年份(如89)直接加1900
  • 重新拼接成标准日期格式
def convert_custom_date(date_str):
    # 拆分日期的年、月、日部分
    year_segment, month, day = date_str.split('/')
    year_num = int(year_segment)
    
    # 按规则补全年份
    if year_num >= 100:
        full_year = 2000 + (year_num % 100)
    else:
        full_year = 1900 + year_num
    
    # 拼接回完整日期字符串
    return f"{full_year}/{month}/{day}"

# 测试示例
print(convert_custom_date("117/12/31"))  # 输出:2017/12/31
print(convert_custom_date("89/12/31"))   # 输出:1989/12/31
2. Excel 公式实现

如果是在Excel中批量处理,假设原始日期在A1单元格,可以用两种方式实现:

方式一:直接拼接字符串

适合只需要文本格式日期的场景:

=IF(LEFT(A1,FIND("/",A1)-1)+0>=100, "20"&RIGHT(LEFT(A1,FIND("/",A1)-1),2), "19"&LEFT(A1,FIND("/",A1)-1))&MID(A1,FIND("/",A1),LEN(A1)-FIND("/",A1)+1)

方式二:转换为Excel日期格式

适合后续需要进行日期计算的场景,会自动转成可计算的日期类型:

=TEXT(DATE(IF(LEFT(A1,FIND("/",A1)-1)+0>=100,2000+MOD(LEFT(A1,FIND("/",A1)-1)+0,100),1900+LEFT(A1,FIND("/",A1)-1)+0),MID(A1,FIND("/",A1)+1,FIND("/",A1,FIND("/",A1)+1)-FIND("/",A1)-1),RIGHT(A1,LEN(A1)-FIND("/",A1,FIND("/",A1)+1))),"yyyy/mm/dd")
3. SQL 实现(以MySQL为例)

如果是数据库中的日期字符串需要转换,可以用SQL的字符串函数来处理:

SELECT 
    CONCAT(
        CASE 
            WHEN CAST(SUBSTRING_INDEX(old_date, '/', 1) AS UNSIGNED) >= 100 
            THEN 2000 + MOD(CAST(SUBSTRING_INDEX(old_date, '/', 1) AS UNSIGNED), 100)
            ELSE 1900 + CAST(SUBSTRING_INDEX(old_date, '/', 1) AS UNSIGNED)
        END,
        SUBSTRING(old_date, LOCATE('/', old_date))
    ) AS converted_date
FROM your_table;

注意:如果你的需求里有特殊情况(比如00/12/31需要转换为2000/12/31而不是1900/12/31),可以调整判断条件,比如在else分支里加一个判断:ELSE IF year_num = 0 THEN 2000 ELSE 1900 + year_num END IF

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

火山引擎 最新活动