Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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
Java 日期可以追溯到某一天_Java_Spring_Hibernate_Date_Spring Mvc - Fatal编程技术网

Java 日期可以追溯到某一天

Java 日期可以追溯到某一天,java,spring,hibernate,date,spring-mvc,Java,Spring,Hibernate,Date,Spring Mvc,我有一个实体和字段 public class MovieReleaseDateEntity { @Basic @Column(name = "release_date") @Temporal(TemporalType.DATE) private Date date; } 我将日期保存在数据库中 https://zapodaj.net/14dfcfb70926a.png.html "date": "2017-12-06T23:00:00.000+0000

我有一个实体和字段

public class MovieReleaseDateEntity {
     @Basic
     @Column(name = "release_date")
     @Temporal(TemporalType.DATE)
     private Date date;
}
我将日期保存在数据库中

https://zapodaj.net/14dfcfb70926a.png.html
"date": "2017-12-06T23:00:00.000+0000"
我从数据库下载后得到的

https://zapodaj.net/14dfcfb70926a.png.html
"date": "2017-12-06T23:00:00.000+0000"

该日期被撤销一天。为什么?

它不会将日期还原回原来的日期,它检索不同时区的日期,比原来少一个小时,并显示为前一天(因此
2017-12-07 00:00:00
变为
2017-12-06 23:00:00
)<您可能正在使用的code>java.date和
java.sql
包只是以毫秒为单位表示为long的包装器,因此还需要时区


检查您的时区和服务器的时区,并确保它们匹配。如果出于任何原因无法更改,则可以使用日期格式化程序在从数据库检索时解析特定时区中的时间

它不会还原日期,而是检索不同时区中的日期,时间缩短一小时,并显示为前一天(因此
2017-12-07 00:00:00
变为
2017-12-06 23:00:00
). <您可能正在使用的code>java.date和
java.sql
包只是以毫秒为单位表示为long的包装器,因此还需要时区

https://zapodaj.net/14dfcfb70926a.png.html
"date": "2017-12-06T23:00:00.000+0000"
检查您的时区和服务器的时区,并确保它们匹配。如果由于任何原因无法更改,则可以使用日期格式化程序在从数据库检索时解析特定时区中的时间

tl;博士
https://zapodaj.net/14dfcfb70926a.png.html
"date": "2017-12-06T23:00:00.000+0000"
这些都代表了时间线上的同一点,同一个同时发生的时刻:

  • 2017-12-06T23:00:00.000+0000
  • 2017-12-07T00:00:00.000+01:00
  • 2017-12-07T04:30:00.000+05:30
细节 当前的时间比预期提前一小时

“2017-12-06T23:00:00.000+0000”

您的字符串表示UTC中的一个时刻。请注意
+0000
,它是
+00:00
的缩写,表示与UTC的偏移量为零小时零分钟。UTC也是如此

通过波兰墙上的时钟镜头看到的同一时刻是下一个日期的早上00:00。这是波兰新一天的第一刻

“2017-12-07T00:00:00.000+01:00”

同一时刻稍后出现在印度的一个挂钟上,那里的人们比UTC早五个半小时

“2017-12-07T04:30:00.000+05:30”

如果波兰的失眠症患者给他们在北美西海岸的朋友打电话,他们可能会在早些时候下午3点发现他们的朋友还在上班。墙上的钟比UTC晚八小时

“2017-12-06T15:00:00.000-08:00”

将输入字符串解析为
OffsetDateTime
对象。要查看其他时区中的同一时刻,请添加
ZoneId
以获取
zoneDateTime
。搜索堆栈溢出以获取详细信息,因为这已经被讨论过很多次了

避免使用有缺陷的旧日期时间类,例如
date
。只使用它们的替代品,即现代业界领先的java.time类

tl;博士 这些都代表了时间线上的同一点,同一个同时发生的时刻:

  • 2017-12-06T23:00:00.000+0000
  • 2017-12-07T00:00:00.000+01:00
  • 2017-12-07T04:30:00.000+05:30
细节 当前的时间比预期提前一小时

“2017-12-06T23:00:00.000+0000”

您的字符串表示UTC中的一个时刻。请注意
+0000
,它是
+00:00
的缩写,表示与UTC的偏移量为零小时零分钟。UTC也是如此

通过波兰墙上的时钟镜头看到的同一时刻是下一个日期的早上00:00。这是波兰新一天的第一刻

“2017-12-07T00:00:00.000+01:00”

同一时刻稍后出现在印度的一个挂钟上,那里的人们比UTC早五个半小时

“2017-12-07T04:30:00.000+05:30”

如果波兰的失眠症患者给他们在北美西海岸的朋友打电话,他们可能会在早些时候下午3点发现他们的朋友还在上班。墙上的钟比UTC晚八小时

“2017-12-06T15:00:00.000-08:00”

将输入字符串解析为
OffsetDateTime
对象。要查看其他时区中的同一时刻,请添加
ZoneId
以获取
zoneDateTime
。搜索堆栈溢出以获取详细信息,因为这已经被讨论过很多次了


避免使用有缺陷的旧日期时间类,例如
date
。只使用它们的替代品,即现代业界领先的java.time类

在将日期存储到dB之前,您将在哪个时区获取日期。我在波兰。您的计算机中定义了哪个时区?是否正好是几小时差的一天差?如果是几个小时的差异,则可能是时区问题。在将日期存储到dB之前,也请参考您获取日期的时区。我在波兰。您的计算机中定义了什么时区?是否正好是一天的几个小时差异?如果相差几个小时,则可能是时区问题。另请参阅