I have a strange date error that I can't solve for days and ask for your help.
I have developed in Java/Spring/Vaadin/Hibernate an app that creates a sport training every day by a user. The problem is that the training date is not displayed correctly in browser. For example, I create now a new training:
training.setTrainingdate(LocalDate.now());
On localhost shows right but online from Amazon AWS Tomcat shows it wrong date (one day before). The MySql database is common for both cases (localhost and aws) the same on an Amazon AWS RDS Mysql DB. My Time zone is UTC +1 (Europe/Vienna)
2020-02-17
but in the browser when I get the trainig from aws is show
2020-02-16
What I've already checked:
- On AWS-RDS-MySQL Server:
SELECT now();
2020-02-17 12:55:50
and
SELECT * FROM `mydatabase`.training;
2020-02-17
- Elastic Beanstalk on SSH:
date
Mon Feb 17 11:55:50 UTC 2020
- Log files
- /var/log/tomcat8/catalina.out
- /var/log/tomcat8/httpd/access_log
- /var/log/tomcat8/httpd/error_log
2020-02-17 11:55:50.985
No matter what time I try the difference stay one day.
Different devices and different browser same problem.
Do you have an Ideea what can be? Thank you very much!
EDIT:
TimeZone.getDefault())
On Production Server:
sun.util.calendar.ZoneInfo[id="Universal",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
On localhost:
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]]
RESOLVED
Solution:
I add a version to maven mysql-connector-java dependency:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency>
I add to spring applications.properties:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
and add/change in the tail of spring.datasource.url to:
?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
PS Many thanks to all who try to help! Specially thanks to @Leif Åstrand and @PeMa