Get请求参数@RequestBody PageReqVo pageReqVo 有个字段是createTime 为LocalDateTime[],通过注解
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
时间变成1970-01-01T08:00
-
@RequestBody
与@DateTimeFormat
的不兼容性:@RequestBody
通常用于处理 HTTP 请求体中的数据,这些数据通常以 JSON 或 XML 等格式发送。@DateTimeFormat
注解是专门用于将 String 类型的请求参数(如通过 URL 的查询参数或表单数据发送的)转换为 Java 的日期/时间类型(如LocalDateTime
)。然而,它不适用于@RequestBody
注解的情况,因为@RequestBody
已经指示 Spring 使用 HTTP 消息转换器(如 Jackson)来解析 JSON 数据为 Java 对象。 -
LocalDateTime[] 的处理:
当你尝试通过@RequestBody
将 JSON 数组(如["2023-01-01T12:00:00", "2023-01-02T13:00:00"]
)转换为LocalDateTime[]
时,你依赖的是你的 JSON 库(如 Jackson)的默认行为或你可能已配置的自定义序列化/反序列化器。@DateTimeFormat
在这种情况下不会被触发。 -
时间变为 1970-01-01T08:00:
这个具体的时间(1970-01-01T08:00)很可能是由于解析错误或默认值引起的。如果LocalDateTime[]
数组中的某个元素解析失败(比如格式不正确),那么相应的LocalDateTime
实例可能会保持为默认值(通常是 Java 8 日期时间类的原点,即 Unix 纪元时间,即 1970-01-01T00:00:00Z)。但是,由于时区问题(如果你的环境默认时区为东八区),显示时可能会调整为 1970-01-01T08:00