我有一个奇怪的日期错误,我几天都无法解决,并寻求您的帮助。
我已经在Java / Spring / Vaadin / Hibernate中开发了一个应用,该应用每天都会由用户创建运动训练。问题是培训日期未在浏览器中正确显示。例如,我现在创建一个新的培训:
training.setTrainingdate(LocalDate.now());
[在本地主机上显示正确,但从Amazon在线显示AWS Tomcat显示错误的日期(前一天)。MySql数据库在两种情况下(localhost和aws)是通用的,在Amazon AWS RDS Mysql DB上是相同的。我的时区是UTC +1(欧洲/维也纳)
2020-02-17
但是在浏览器中,当我从aws获得trainig时显示
2020-02-16
我已经检查过的内容:
-在AWS-RDS-MySQL服务器上:
SELECT now();
2020-02-17 12:55:50
和
SELECT * FROM `mydatabase`.training;
2020-02-17
-SSH上的Elastic Beanstalk:
date
2020年2月17日星期一11:55:50 UTC
2020-02-17 11:55:50.985
无论我什么时候尝试保留一天的时间。
不同的设备和不同的浏览器存在相同的问题。
你有一个Idea吗?非常感谢!
编辑:
TimeZone.getDefault())
在生产服务器上:
sun.util.calendar.ZoneInfo [id =“ Universal”,offset = 0,dstSavings = 0,useDaylight = false,transitions = 0,lastRule = null]
在本地主机上:
sun.util.calendar.ZoneInfo [id =“ Europe / Berlin”,offset = 3600000,dstSavings = 3600000,useDaylight = true,transitions = 143,lastRule = java.util.SimpleTimeZone [id = Europe / Berlin,offset = 3600000,dstSavings = 3600000,useDaylight = true,startYear = 0,startMode = 2,startMonth = 2,startDay = -1,startDayOfWeek = 1,startTime = 3600000,startTimeMode = 2,endMode = 2,endMonth = 9,endDay =- 1,endDayOfWeek = 1,endTime = 3600000,endTimeMode = 2]]
已解决
解决方案:
我将版本添加到Maven mysql-connector-java依赖项:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
我添加到spring applications.properties:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
并将spring.datasource.url的尾部添加/更改为:
?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
PS非常感谢所有尝试提供帮助的人!特别感谢@LeifÅstrand和@PeMa