【发布时间】:2019-05-04 15:36:07
【问题描述】:
在服务将 LocaDateTime 写入数据库的过程中,在我的例子中,在使用 java 8 的 Spring Boot API 中,当在数据库端保存配置为 TIMESTAMP 的属性和 API 中的 LocaDateTime 时,该日期正在保存超过当前操作系统日期 3 小时。
假设我尝试在早上 10 点准确执行此操作,保存到数据库的日期应该是 11 小时,但在我的情况下它不是这样工作的......
private LocalDateTime dataLimite;
@PrePersist
public void prepareToSave() {
String str = "1986-04-08 10:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);
this.dataLimite = dateTime.plusHours(1);
}
显然可能会注意到这是Mysql配置方面的问题,但是当我测试时......
SELECT NOW();
结果正是操作系统的日期和时间,那么真正发生的问题是什么?如何解决这个问题?
【问题讨论】:
-
所有软件/服务器是否在同一个时区?
-
是的,我在保存日期之前调试了应用程序,一切都与它应该的完全一样。
-
Markdown 标记中的
>用于引用,而不是您自己的散文。我修正了你的格式。
标签: java mysql spring-boot spring-data-jpa