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

Spring接口JSON反序列化带时区日期报错 如何正确配置日期字段?

问题根因

你收到的报错核心原因是接口返回的日期字符串 2021-09-10T21:48:35.352+0000 末尾的 +0000 为时区偏移标识,而你使用的 LocalDateTime 类型本身不包含时区信息,Jackson 默认反序列化规则无法识别这部分后缀,因此会在索引23的位置抛出解析失败错误。

解决方案

方案1:使用带时区的日期类型(推荐)

直接将字段类型替换为原生支持时区偏移解析的 OffsetDateTime 或 ZonedDateTime,无需额外配置格式即可完成反序列化:

@JsonProperty("processedAt")
private OffsetDateTime processedAt;

如果后续业务需要转换为本地时区的 LocalDateTime,可通过如下方式转换:

LocalDateTime localTime = processedAt.atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();

方案2:保留LocalDateTime类型,新增格式注解

如果业务不需要保留时区信息,只想直接解析为LocalDateTime,可以添加@JsonFormat注解指定匹配的日期格式与时区:

@JsonProperty("processedAt")
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone = "GMT+8") // timezone按业务实际需要的时区填写
private LocalDateTime processedAt;

注:SpringBoot 项目的 spring-boot-starter-web 默认已经引入 jackson-datatype-jsr310 依赖,无需额外手动引入即可支持 Java8 时间类的序列化/反序列化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:36:03