使用Spring Boot默认杰克逊映射时更改日期时区

时间:2018-08-24 18:47:25

标签: spring rest jackson

我有spring boot rest服务,它调用另一个服务xyz并从json接收yyyy-MM-ddXXX格式的日期。但是我的服务响应中日期的时区正在更改。假设我从服务xyz获取JSON中的日期为“ date”:“ 2018-08-27-07:00”,但是我的服务响应返回日期:“ 2018-08-27-04:00”。偏移量已更改。我的POJO中的日期字段为。我想使用与后端服务相同的偏移量,它可以是任何偏移量。

 @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-ddXXX")
   private Calendar date;

1 个答案:

答案 0 :(得分:1)

问题是Calendar(和Date)使用隐式时间转换将其调整为您的时区。几乎总是这是意料之外的事情。

为避免这种情况,请使用java.time类(例如OffsetDateTimeZonedDateTime,如果不需要在时区工作,甚至可以使用LocalDateTime类)。

还有一些小建议:尝试使用符合ISO8601标准的时间格式(例如2018-08-24T22:30:00