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 m s \pm1ms ±1ms)
- 时间范围:
- 年份默认跨度:1900-2099(两位数年份)
- 实际年份 = 1900 + y y 1900 + yy 1900+yy 或 2000 + y y 2000 + yy 2000+yy (根据解析器配置)
- 缺失部分:
- 缺少 分钟 (
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.015DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMMddHHSSS");// 自动补全分钟和秒的零值LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);System.out.println(dateTime); // 输出:2024-05-20T15:00:00.015}
}
⚠️ 注意事项
-
字段缺失陷阱:
缺少分钟秒字段,实际时间固定为 分钟 = 00 \text{分钟}=00 分钟=00, 秒 = 00 \text{秒}=00 秒=00
实际时间 = 日期 + 小时 : 00 : 00. SSS \text{实际时间} = \text{日期} + \text{小时}:00:00.\text{SSS} 实际时间=日期+小时:00:00.SSS -
年份歧义问题:
yy
会解析为:- 00-79 → 2000-2079 年
- 80-99 → 1980-1999 年
(可通过DateTimeFormatterBuilder.appendValueReduced()
自定义年份基线)
-
容错性:
- 无效值(如
MM=13
)会抛出DateTimeParseException
- 毫秒值 S S S > 999 SSS>999 SSS>999 会导致解析失败
- 无效值(如