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

如何从字符串CAH132242F0A提取日期并转为yyyy-mm-dd格式?

从字符串提取年份和年内天数并转换为日期格式

要处理字符串CAH132242F0A并得到yyyy-mm-dd格式的日期,核心步骤是提取年份片段、提取年内天数,再通过对应语言的日期工具转换格式:

核心逻辑

  • 年份:取字符串第3-4位(13),前缀补20得到2013
  • 年内天数:取字符串第5-7位(224),代表2013年的第224天
  • 转换:将「年份+年内天数」转换为标准日期格式

Python 实现

利用datetime模块的日期计算能力:

from datetime import datetime, timedelta

input_str = "CAH132242F0A"
# 提取年份和年内天数
year = 2000 + int(input_str[2:4])  # 取索引2-4的字符,转整数后加2000
day_of_year = int(input_str[4:7])  # 取索引4-7的字符转整数

# 计算日期:从当年1月1日加上(天数-1)天(因为1月1日是第1天)
target_date = datetime(year, 1, 1) + timedelta(days=day_of_year - 1)
# 格式化为yyyy-mm-dd
formatted_date = target_date.strftime("%Y-%m-%d")

print(formatted_date)  # 输出:2013-08-12

Java 实现(Java 8+)

使用java.time.LocalDate的ofYearDay方法直接转换:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateExtractor {
    public static void main(String[] args) {
        String inputStr = "CAH132242F0A";
        // 提取年份和年内天数
        int year = 2000 + Integer.parseInt(inputStr.substring(2, 4));
        int dayOfYear = Integer.parseInt(inputStr.substring(4, 7));
        
        // 直接通过年内天数生成日期
        LocalDate targetDate = LocalDate.ofYearDay(year, dayOfYear);
        // 格式化为yyyy-mm-dd
        String formattedDate = targetDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
        
        System.out.println(formattedDate);  // 输出:2013-08-12
    }
}

MySQL 实现

利用内置的MAKEDATE函数直接生成日期,再用DATE_FORMAT格式化:

SET @input_str = 'CAH132242F0A';
-- 提取年份和天数,生成日期后格式化
SELECT DATE_FORMAT(
    MAKEDATE(2000 + SUBSTRING(@input_str, 3, 2), SUBSTRING(@input_str, 5, 3)),
    '%Y-%m-%d'
) AS formatted_date;
-- 输出结果:2013-08-12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:07