使用@JsonFormat拆分带Z后缀日期时LocalTime对应的pattern该如何设置
问题解答
首先根据你的场景给出明确结论:
- 如果你需要拆分后的
time字段保留原时间字符串末尾的Z标识,输出格式为14:17:16Z,那么pattern设置为"HH:mm:ss'Z'"是可行的。 - 如果你不需要保留
Z标识,只需要输出纯时间部分14:17:16,直接设置pattern为"HH:mm:ss"即可。
注意事项
你需要额外关注隐含的时区问题:
LocalTime属于无时区信息的时间类型,你用单引号包裹的'Z'只会被当成固定字符串拼接/校验,不会触发任何时区转换逻辑。
你原来的Date序列化输出的Z代表UTC零时区,拆分后如果后续需要把date和time组合回完整时间,需要手动绑定UTC时区,否则会默认使用JVM的系统时区,导致时间偏移错误。
如果你的场景是需要把原有的带Z的完整时间字符串反序列化拆分到这两个字段,只单独配置两个字段的@JsonFormat无法生效,需要先把完整字符串解析为ZonedDateTime,再手动拆分赋值给date和time字段。
内容的提问来源于stack exchange,提问作者Pavel Petrashov
相关产品推荐
相关产品推荐

