我有一个拥有能量场的实体
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"
日期被取消了一天。为什么?
3条答案
按热度按时间qxsslcnc1#
TL;医生
这些都代表了时间线上的同一个点,同一个同时发生的时刻:
详情
Europe/Warsaw
time zone目前比UTC快一个小时。"2017年12月6日23时00分00.000 + 0000秒"
字符串表示UTC中的一个时刻。注意
+0000
,它是+00:00
的缩写,表示从UTC开始的零小时零分钟的偏移量。因此,它在UTC时为 *。透过波兰墙上的钟的镜头看到的同一时刻是下一个日期的早晨00:00,这是波兰新的一天的第一个时刻。
"2017年12月7日上午00时00分00秒00秒00秒+01秒"
同样的时刻也出现在印度的挂钟上,那里的人们比UTC早五个半小时。
"2017年12月7日04时30分00秒000 + 05时30分"
如果一个波兰的失眠症患者打电话给他们在北美西海岸的朋友,他们可能会在下午3点左右发现朋友还在工作,墙上的时钟比协调世界时晚了8个小时。
"2017年12月6日星期一15时00分00秒00秒00秒至8时00秒"
将输入字符串解析为
OffsetDateTime
对象。要查看其他时区的相同时刻,添加ZoneId
以获得ZonedDateTime
。搜索Stack Overflow以了解详细信息,因为这已经被介绍过很多次了。避免使用
Date
等有缺陷的旧日期-时间类,只使用它们的替代品,即当今业界领先的java.time类。kiz8lqtg2#
它不会将日期还原,而是检索不同时区的日期,少一个小时,并显示为前一天(因此
2017-12-07 00:00:00
变为2017-12-06 23:00:00
)。您可能正在使用的java.date
和java.sql
包只是用 Longs 表示的毫秒 Package 器,因此也需要时区。检查您的时区和服务器的时区,并确保它们匹配。如果由于任何原因无法更改时区,则可以在从数据库检索时使用日期格式化程序来解析特定时区中的时间
sz81bmfz3#
我通过将mysql数据库列类型从日期更改为日期时间修复了此问题