【发布时间】:2018-06-20 00:49:01
【问题描述】:
我有一个 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 包不兼容的一些事情。这将是我最后的选择,并且更喜欢允许我保留时间戳的更改。
谢谢
【问题讨论】:
-
这听起来像是您忽略了时区。如果您是真正的“印第安纳州人”,您可能比 UTC 晚 5 小时(尽管我相信印第安纳州是一个有随机时区的地方)。就这么多时间吗?
-
Timestamp类已经过时了。你要执着于什么? -
Ole,如果不是 Timestamp,你有什么建议?数据库是将数据存储为日期时间的 MySQL。
-
我认为最好的解决方案是将MySQL中的数据类型更改为date,然后在Java中使用
java.time.LocalDate。那么就没有时间可以处理或失去。如果您无法更改列类型,您可能应该在 Java 中使用LocalDateTime。 -
@OleV.V. - 感谢提及的提示和类型的建议。我试试看!
标签: java angularjs json timestamp