我有一个奇怪的日期错误,好几天都解决不了,请你帮忙。
我用Java/Spring/Vadin/Hibernate开发了一个应用程序,可以由用户每天创建运动训练。问题是培训日期没有在浏览器中正确显示。例如,我现在创建了一个新的培训:
training.setTrainingdate(LocalDate.now());
在localhost上显示正确,但在亚马逊的在线AWS Tomcat显示错误的日期(前一天(。MySql数据库在这两种情况下都很常见=Amazon RDS MySql。我的时区是UTC+1(欧洲/维也纳(
2020-02-17
但在浏览器中,当我从aws获得训练时,显示
2020-02-16
我已经检查过的内容:
-在AWS RDS MySQL服务器上:
SELECT now();
2020-02-17 12:55:50
和
SELECT * FROM `mydatabase`.training;
2020-02-17
-SSH上的弹性Beanstalk:
date
2月17日星期一11:55:50 UTC 2020
- 日志文件
- /var/log/tomcat8/catalina.out
- /var/log/tomcat8/httpd/access_log
- /var/log/tomcat8/httpd/error_log
2020-02-17 11:55:50.985
无论我什么时候尝试,差异都会持续一天。
不同的设备和不同的浏览器有相同的问题。
你有一个Ideea可以是什么?非常感谢!
编辑:
TimeZone.getDefault())
在生产服务器上:
sun.util.calender.ZoneInfo[id="Universal",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
在localhost:上
sun.util.calender.ZoneInfo[id="欧洲/柏林",偏移量=36000,dstSavings=36000,useDaylight=true,transitions=143,lastRule=java.util.SimpleTimeZone[id=欧洲/柏林,偏移量=36000,dstSavings=36000,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=360000,endTimeMode=2]]
已解决
解决方案:
-
我添加了一个版本到maven mysql连接器java依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency>
我添加到弹簧应用程序。属性:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
并将spring.datasource.url的尾部添加/更改为:
?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
PS非常感谢所有试图提供帮助的人!特别感谢@LeifÅstrand和@PeMa