我有一个简单的 POJO,带有一个带有初始值的 Date 字段:
1985-09-17T01:00:00.000+0400
然后这个日期值被映射到带有注释的日期字段的 DTO:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssX")
private Date dateOfBirth;
然后显示结果:
1985-09-16T21:00:00Z
我已经尝试在 @JsonFormat
中设置 timestamp 属性,但这没有帮助,日期仍然无效。
如何正确转换日期?
最佳答案
java.util.Date
中的值是自 Unix 纪元以来的毫秒数,该纪元发生在 1970 年 1 月 1 日午夜,UTC。由于它是从固定纪元开始的毫秒数,因此无论本地时区如何,java.util.Date
中的值在世界范围内的任何特定时刻都是相同的。
因此,在您的情况下,如果您使用 java 8 ZonedDateTime,最好使用 ZonedDateTime
类
关于java - @JsonFormat 转换时区不正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53719740/