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

Java中不使用SimpleDateFormat将字符串时间戳转为日期的问题

Java日期解析问题解决:无SimpleDateFormat处理"20221225182600Z+0100"

错误根源

你的代码存在两个关键问题:

  • 格式化器误用:你创建了自定义的DateTimeFormatter,但解析时却传入了dateTimeFormatter.ISO_OFFSET_TIME——这是JDK内置的仅用于解析偏移时间的常量,和你定义的格式化器毫无关系,直接导致解析逻辑错乱。
  • 格式串不匹配:输入字符串里的Z是固定字面量,但你的格式串yyyyMMddHHmmssZ没有对其转义,格式化器会把Z当成时区标识(UTC)来解析,自然无法匹配后续的+0100,这就是报错"Text '20221225182600Z+0100' could not be parsed at index 2"的核心原因。

修正代码

String dateString = "20221225182600Z+0100";
// 用单引号转义字面量Z,末尾的Z匹配+0100格式的时区偏移
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss'Z'Z");
ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateString, dateTimeFormatter);
System.out.println(zonedDateTime);

额外说明

  • 输入中的Z如果是笔误(比如本应只表示UTC或只带+0100偏移),需要先修正输入字符串,再对应调整格式串。
  • 格式串里的'Z'表示将该字符作为普通文本解析,末尾的Z则专门匹配±HHmm格式的时区偏移量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:52:13