java - JSON 到 java.sql.timestamp 反序列化丢失了几个小时,导致日期丢失了一天

标签 java angularjs json timestamp

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

相关文章:

java - 使用 Jackson 读取 JSON 字符串的一部分

c# - 如何解码包含UTF-8字节顺序标记(BOM)的JSON字符串?

java - java函数声明中<T, U extends T>的含义

javascript - 如何使用可能包含空单元格的 JSON 数据填充表格 (AngularJS)

java - 更改存储在基于哈希的集合中的对象的哈希代码

javascript - 无法在 Angular js 中加载资源错误

javascript - 当我将数据放在 "distribuidora"字段时,我的表没有更新

json - Golang 转换 JSON

java - 避免线程在更改 Activity 时重新启动

java - 如何根据微调器值将音频保存在SD卡中