java - @JsonFormat 转换时区不正确的日期

标签 java json datetime jackson

我有一个简单的 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/

相关文章:

java - 从套接字流读取时 Genson 的行为非常奇怪

Python,JSON 如何检查用户选择的时间是否尚未被其他人预订?

javascript - 如何从 json 数据中删除任何项目?

java - 谷歌日历 API : Event endTime is decremented by 1 day

c# - 防止反序列化 DateTime 值时进行时区转换

java - JButton KeyBinding 和 setActionCommand

java - 在抽屉导航标题中设置文本

java - 向现有应用程序添加审计的良好模式或框架?

java - 基于 n 元字符的相似性度量

c# - 在 C# 中更改时区