Jackson日期反序列化时区问题

今天遇到了一个的问题,当用Jackson对Json中的日期类型进行反序列化时,出现了日期错误的问题,当时写法是这样的:

@Data
@NoArgsConstructor
public class TotalByAccessIdRest {

    @NotNull
    @JsonProperty("access_id")
    private String accessId;

    @NotNull
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty("start_time")
    private Date startTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonProperty("end_time")
    private Date endTime = new Date();
}
按平时来看,好像根本没有什么问题。但当你发送请求,比如你发送startTime或者endTime参数值为2020-04-13时间时,在Controller端实际你收到后的值就变成了2020-04-12 看上去减少了一天

解决方案:

  1. 在你每个日期类型的字段上的 @JsonFormat 加上属性 timezone="GMT+8"
  2. 先将日期转成字符串然后再进行序列化传输,这样就不会有问题了
 
posted @ 2024-11-04 14:58  TIME_小白  阅读(257)  评论(0)    收藏  举报