开发环境和生产环境之间出现奇怪的日期错误

Strange date error between Development and Production environment

我有一个奇怪的日期错误,几天都无法解决,请求您的帮助。

我在 Java/Spring/Vaadin/Hibernate 开发了一款应用程序,用户每天都可以创建运动训练。 问题是训练日期在浏览器中显示不正确。 例如,我现在创建一个新的训练:

training.setTrainingdate(LocalDate.now());

在 localhost 上显示正确但从 Amazon AWS 在线 Tomcat 显示错误日期(一天前)。 MySql 数据库对于这两种情况都是通用的 = Amazon RDS Mysql。 我的时区是 UTC +1 (Europe/Vienna)

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 上的 Elastic Beanstalk:

date

Mon Feb 17 11:55:50 UTC 2020

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>
    

我加到springapplications.properties:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

和add/change在spring.datasource.url的尾部到:

?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false

PS 非常感谢所有试图提供帮助的人!特别感谢@Leif Åstrand 和@PeMa