我有一个 Spring 应用程序,其中的实体将日期存储为 java.sql.Timestamp
。 Angular 前端正在捕获 yyyy-mm-dd 格式的变化,但是当 JSON 反序列化为时间戳时,它会丢失几个小时,最终结果是 dd 部分丢失一天。
我知道这与时区有关,但无法找出最快的解决方案。有没有注释可以解决这个问题?
这是我的代码:
实体类变量
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Timestamp dateNeeded;
JSON数据传入:
"DateNeeded": "2017-12-25"
我宁愿不必从 java.sql.Timestamp
进行更改,但已经看到了对此影响的指导...有关 Jackson 与 java.sql 包的配合不佳的情况。这将是我的最后一个选择,并且更喜欢允许我保留时间戳的更改。
谢谢
最佳答案
该问题是由于时区造成的。当您未指定时间时,它会将其设置为 00:00:000
然后将其转换为毫秒并构造一个 Timestamp 对象。由于本地时区与 UTC 存在偏差,因此会减去一些小时。
您必须将 dateNeeded 替换为递增的时间戳,该时间戳在存储之前会根据本地时区偏移量进行偏移。
关于java - JSON 到 java.sql.timestamp 反序列化丢失了几个小时,导致日期丢失了一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48194379/