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

ISO-8601日期毫秒为0时的格式疑问:服务返回格式是否合规

这是ISO-8601的合法预期行为,并非服务异常

ISO-8601标准允许省略时间中无意义的精度部分,当毫秒数为0时,.SSS这一段确实可以被省略,两种格式(带毫秒/不带毫秒)都符合标准规范。

你现在遇到的Jackson解析失败问题,是因为硬编码了固定的日期格式yyyy-MM-dd'T'HH:mm:ss.SSS'Z',这个模式要求必须存在毫秒部分。要解决这个问题,有两种简单的调整方式:

  1. 修改格式模式,将毫秒部分设为可选
    在@JsonFormat注解里使用带可选段的模式:

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss[.SSS]Z")
    

    其中[.SSS]表示这一段是可选的,Jackson会自动匹配带或不带毫秒的格式。

  2. 直接使用Jackson的ISO-8601原生支持
    如果你的项目使用JSR-310日期类型(比如Instant、LocalDateTime),可以引入JavaTimeModule并配置ObjectMapper,让它自动处理所有合法的ISO-8601格式:

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.registerModule(new JavaTimeModule());
    objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    

    这种方式不需要手动指定格式,Jackson会自动兼容带毫秒、不带毫秒甚至其他合法的ISO变体格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:25:00