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

时间:2020-02-17 12:44:41

标签: java mysql spring amazon-elastic-beanstalk vaadin

我有一个奇怪的日期错误,几天之内无法解决,并寻求您的帮助。

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

training.setTrainingdate(LocalDate.now());

在localhost上显示正确,但从Amazon在线显示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上的Elastic Beanstalk:

date

2020年2月17日星期一11:55:50 UTC

  • 日志文件
  • /var/log/tomcat8/catalina.out
  • / var / log / tomcat8 / httpd / access_log
  • / var / log / tomcat8 / httpd / error_log

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]]

1 个答案:

答案 0 :(得分:0)

已解决

解决方案:

  • 我向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

相关问题