我有要输出到Jackson的DTO,其中的字段定义为

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy")
Date reportingDate;


该字段以Timestamp Without Timezone的形式存储在Postgres DB中,例如。

2019-04-01 22:04:40.353


此字段的JSON错误地输出到2019-04-02。我已验证是由于杰克逊将我的值与格林尼治标准时间(GMT)的时区差异加了+5,所以出现了问题。这是不正确的,我应该只从数据库中获得确切的日期值。我的杰克逊配置不正确吗?

最佳答案

我通过添加以下timezone属性解决了它。

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy", timezone = "America/New_York")
Date reportingDate;


现在,它不会加+5成为格林尼治标准时间。

09-15 14:09