JSON到java.sql.timestamp反序列化会丢失小时数,导致日期丢失一天

时间:2018-01-10 19:01:10

标签: java angularjs json timestamp

我有一个Spring应用程序,其实体存储日期为java.sql.Timestamp。角度前端正在捕获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,但已经看到了这种影响的指导......关于杰克逊在java.sql软件包上玩得不好。这将是我的最后一个选项,并且更喜欢允许我保留时间戳的更改。

由于

1 个答案:

答案 0 :(得分:1)

问题是由于时区造成的。如果未指定时间,则将其设置为00:00:000

然后将其转换为毫秒并构造一个Timestamp对象。由于当地时区的UTC偏移量减去了几个小时。

您必须将dateNeeded替换为递增的Timestamp,该时间戳在存储之前会被本地时区偏移量偏移。