使用弹簧引导默认杰克逊映射时更改时区的日期



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

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

问题是Calendar(和Date(使用隐式时间转换来调整它到你的时区。而且几乎总是这是意料之外的事情。

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

和小的题外话建议:尝试使用符合ISO8601标准的时间格式(如2018-08-24T22:30:00(

最新更新