yyMMddHHSSS 是什么日期

日期格式 yyMMddHHSSS 的解析

格式符号含义分析

该日期格式由以下组成部分(从右向左解析):

格式符号 含义 值范围 长度 示例
SSS 毫秒 000-999 3位 015
HH 小时 (24时制) 00-23 2位 15
dd 01-31 2位 21
MM 01-12 2位 05
yy 年 (后两位) 00-99 2位 24

完整格式说明

表达式:$ yyMMddHHSSS $

  • 总长度: 11位(2+2+2+2+3=11)
  • 顺序结构:
    年(后两位) + 月 + 日 + 小时 + 毫秒
    y y ⏟ 年 M M ⏟ 月 d d ⏟ 日 H H ⏟ 小时 S S S ⏟ 毫秒 \underbrace{yy}_{年}\underbrace{MM}_{月}\underbrace{dd}_{日}\underbrace{HH}_{小时}\underbrace{SSS}_{毫秒} yy MM dd小时 HH毫秒 SSS

技术特点

  1. 时间精度:精确到毫秒级 ( ± 1 m s \pm1ms ±1ms)
  2. 时间范围
    • 年份默认跨度:1900-2099(两位数年份)
    • 实际年份 = 1900 + y y 1900 + yy 1900+yy 2000 + y y 2000 + yy 2000+yy (根据解析器配置)
  3. 缺失部分
    • 缺少 分钟 (mm) 和 (ss) 字段
    • 解析时会自动补零(Java中默认分钟=0,秒=0)

解析示例

字符串:24052015015
解析结果:

yy = 24  → 2024年
MM = 05  → 5月
dd = 20  → 20日
HH = 15  → 15时 (下午3点)
SSS = 015 → 15毫秒

→ 完整时间:2024年5月20日 15:00:00.015

Java解析代码

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        String dateStr = "24052015015"; // 2024-05-20 15:00:00.015
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMddHHSSS");
        
        // 自动补全分钟和秒的零值
        LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
        System.out.println(dateTime); // 输出:2024-05-20T15:00:00.015
    }
}

⚠️ 注意事项

  1. 字段缺失陷阱
    缺少分钟秒字段,实际时间固定为 分钟 = 00 \text{分钟}=00 分钟=00, 秒 = 00 \text{秒}=00 =00
    实际时间 = 日期 + 小时 : 00 : 00. SSS \text{实际时间} = \text{日期} + \text{小时}:00:00.\text{SSS} 实际时间=日期+小时:00:00.SSS

  2. 年份歧义问题
    yy 会解析为:

    • 00-79 → 2000-2079 年
    • 80-99 → 1980-1999 年
      (可通过 DateTimeFormatterBuilder.appendValueReduced() 自定义年份基线)
  3. 容错性

    • 无效值(如 MM=13)会抛出 DateTimeParseException
    • 毫秒值 S S S > 999 SSS>999 SSS>999 会导致解析失败

你可能感兴趣的:(JAVA开发中遇到的问题,java)