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

问题描述 投票:2回答:1

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

我已经在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

  • 日志文件
  • / 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]]

java mysql spring amazon-elastic-beanstalk vaadin
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.