如何从字符串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
相关产品推荐
相关产品推荐

