【问题标题】:Wrong time when saving in database [closed]保存在数据库中的时间错误[关闭]
【发布时间】:2021-11-21 04:23:51
【问题描述】:

由于某种原因,记录的日期字段以错误的时间保存在数据库中,在这种情况下,它们会返回 2 小时。我的应用程序在 tomcat 9 上运行。当使用嵌入式 tomcat 在我的本地计算机上运行应用程序时,此行为不会复制,而当它在远程服务器上运行时会复制。我已经排除了机器时间和窗口的问题,在这种情况下唯一的变量是 tomcat,但我找不到任何可能导致这种行为的东西。

这是一个 log4j 条目,显示正确的日志条目时间但错误的操作时间:

2021-09-29 10:25:04,391 INFO ? [https-openssl-nio-8444-exec-8] ***.***.***.*** accessed resource /app/contracts/249 @ 29/09/2021 at 08:25:04

日志条目:10:25

操作:08:25

【问题讨论】:

  • 您有不同的时区,可能是 UTC 和 UTC+2
  • 我已经排除了时区差异。机器的时区和 Window 的设置正确。
  • 来吧。这显然是一个时区问题。您现在生活在中欧时区,夏季 UTC+2。
  • 是否涉及数据库?数据库可以有不同的时区..
  • 这能回答你的问题吗? Daylight saving time and time zone best practices

标签: java spring tomcat timezone


【解决方案1】:

您需要明确设置数据库时区以匹配您机器上的时区,例如 mysql jdbc:mysql://localhost:3306/DATABASE_NAME?serverTimezone=UTC

或者在你的情况下,如果它是 UTC+2:

jdbc:mysql://localhost:3306/DATABASE_NAME?serverTimezone=Europe/Berlin

【讨论】:

  • 阿尔巴尼亚使用欧洲/地拉内时区。
  • 数据库的时区和机器的匹配:/
猜你喜欢
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多