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

Java解析老式日期报错:无法反序列化1901年日期值

解决Java解析带秒级时区偏移的日期字符串问题

你的日期字符串1901-01-01T00:20:40.000+02:20:40解析失败的核心原因不是“老式日期”,而是时区偏移部分包含了秒数(+02:20:40)——Java传统的java.util.Date及配套解析工具默认不支持这种带秒的时区格式,而你之前处理的近20年日期时区偏移都是±HH:mm格式,所以能正常解析。

下面是两种可行的解决办法:

方案一:改用Java 8+新日期API(推荐)

Java 8引入的java.time包完全支持带秒级时区偏移的ISO 8601格式,步骤如下:

  1. 修改实体类字段类型:
import java.time.OffsetDateTime;

public class Record extends Docs {
    public OffsetDateTime published;
}
  1. 确保Jackson版本≥2.6(RestAssured默认依赖的Jackson版本通常满足),若使用旧版本,需添加jackson-datatype-jsr310依赖(Maven示例):
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>对应Jackson版本号</version>
</dependency>

修改后RestAssured会自动完成解析,无需额外配置。

方案二:自定义Jackson日期格式(兼容旧Date类型)

如果必须保留java.util.Date类型,可通过Jackson注解或全局配置支持带秒的时区格式:

方式1:字段级注解配置

在published字段上添加@JsonFormat注解指定格式:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class Record extends Docs {
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
    public Date published;
}

其中XXX格式符支持包含秒数的ISO时区偏移格式。

方式2:全局Jackson配置

通过RestAssured的全局配置统一设置日期解析格式:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.text.SimpleDateFormat;
import io.restassured.config.RestAssuredConfig;
import io.restassured.config.ObjectMapperConfig;

// 自定义ObjectMapper
ObjectMapper customMapper = new ObjectMapper();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
customMapper.setDateFormat(dateFormat);
customMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

// 配置RestAssured使用自定义Mapper
RestAssuredConfig config = RestAssured.config()
        .objectMapperConfig(new ObjectMapperConfig()
                .jackson2ObjectMapperFactory((cls, charset) -> customMapper));

将上述config传入你的请求代码即可生效。

额外提示

优先选择Java 8+的java.time API,它是官方推荐的日期处理方案,相比java.util.Date更安全、API设计更清晰,还能避免旧API的线程安全问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:36:16