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

Java16 DateTimeFormatter带单引号Z解析LocalDateTime失败问题

解析失败的核心原因

你在模式中定义的'Z'字面量,要求待解析的字符串末尾必须包含大写字母Z才能匹配成功,而你传入的待解析字符串2017-01-17 09:28:45末尾没有该字符,因此触发解析异常。

补充说明

  • 你对单引号作用的认知本身没有问题:DateTimeFormatter模式中,单引号包裹的内容确实会被识别为固定字面量,但「字面量」的规则是要求输入对应位置必须完全匹配该内容,而非自动忽略这个规则要求。
  • 你用不带'Z'的模式可以解析成功,就是因为该模式的规则和你输入的字符串结构完全匹配,没有多余的字符要求。

验证示例

如果你调整待解析字符串为末尾带Z的格式,原模式就可以正常运行:

// 输入字符串末尾带Z,和模式规则匹配,可正常解析
final LocalDateTime dateTime = LocalDateTime.parse("2017-01-17 09:28:45Z", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss'Z'"));

场景拓展建议

如果你的业务中拿到的时间字符串有时会带代表UTC时区的Z后缀,不要硬编码字面量匹配,建议用官方内置的时区格式符处理:

// 自动识别Z为UTC偏移,灵活适配带/不带偏移的时间字符串
final LocalDateTime dateTime = ZonedDateTime.parse("2017-01-17 09:28:45Z", DateTimeFormatter.ISO_ZONED_DATE_TIME)
        .toLocalDateTime();

内容的提问来源于stack exchange,提问作者Umer Asim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:39:03