Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON到java.sql.timestamp反序列化会损失数小时,导致日期损失一天_Java_Angularjs_Json_Timestamp - Fatal编程技术网

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

JSON到java.sql.timestamp反序列化会损失数小时,导致日期损失一天,java,angularjs,json,timestamp,Java,Angularjs,Json,Timestamp,我有一个Spring应用程序,它的实体将日期存储为java.sql.Timestamp。角度前端以yyyy-mm-dd格式捕获更改,但当JSON反序列化为时间戳时,它会丢失几个小时,最终结果是dd部分丢失一天 我知道这与时区有关,但无法找到最快的解决方案。是否有可以修复此问题的注释 这是我的密码: 实体类变量 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") private Timestamp dateNee

我有一个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,但我已经看到了有关此影响的指导。。。关于Jackson对java.sql包的一些不好的地方。这将是我的最后一个选择,我更喜欢一个允许我保留时间戳的更改


谢谢

问题是时区问题。如果不指定时间,则会将其设置为00:00:000

然后将其转换为毫秒,并构造一个Timestamp对象。由于本地时区的偏移量为UTC,因此会减去一些小时


您必须用递增的时间戳替换DateRequired,该时间戳在存储之前由本地时区偏移量偏移

听起来你好像忽略了时区。如果你是一个真正的流浪汉,你很可能比UTC晚5个小时,尽管我相信印第安纳州是一个有随机时区的地方。时间戳类已经过时很久了。你想坚持到底是为了什么?如果不是时间戳,你有什么建议?DB是以DateTime存储数据的MySQL。我认为最好的解决方案是将MySQL中的数据类型更改为,然后在Java中使用。那么就没有时间去处理或浪费了。如果无法更改列类型,则可能应该在Java中使用LocalDateTime。@OleV.V.-谢谢你的提示和建议的类型。我要试一试!