在 Ubuntu 上运行 Java 时间比在 Windows 上运行缩短 1 小时

标签 java windows spring-boot ubuntu time

我有一个使用 Spring Boot 用 Ja​​va + 编写的微服务。我使用 Java 版本 1.8.0_221 在 Windows 10 上开发它。现在我想在 Ubuntu 18.04 上运行它。在 Ubuntu 机器上,我有 OpenJDK 1.8.0_40-b25。

当我在Windows机器上运行它时,控制台消息上显示的时间(我使用log4j2打印它们)和我保存在数据库上的内容的时间(在日期字段上使用@CreatedDate和@TemporalType.TIMESTAMP)注释)是正确,我的 ZoneId.systemDefault 是 Europe/Istanbul。

我的 Ubuntu 机器上也是 Europe/Istanbul。

但是,当我在 Ubuntu 计算机上运行此程序时,时间比我在终端上输入“date”得到的系统时间晚了 1 小时。我打印到控制台的日志上的所有时间以及我的数据库插入都晚了一小时。

我搜索了其他类似的问题,但它们都集中在时区,我不认为在程序的任何部分我正在修改时区。另外,我的 Ubuntu 时间是正确的,这让我觉得我可能需要对 JVM 进行一些更改?

最佳答案

我尝试按照此问题的答案更新时区数据库 this但无法让它发挥作用。所以我决定删除 OpenJDK 并安装 Oracle JDK 8,现在它工作正常。

关于在 Ubuntu 上运行 Java 时间比在 Windows 上运行缩短 1 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60151482/

相关文章:

c++ - 如何扩展 CAxHostWindow?

c++ - libssh - 多次发送请求并从 channel 读取答案

windows - Perl 5.20.1版本下载。如何设置路径?

java - 如何在 fork 进程上使用 gradle 任务启动 spring boot 应用程序?

java - 将参数传递给参数

java - 开发 Eclipse 插件时的图形用户界面

java - @Autowire如何在不使用@Bean注解的情况下获取spring bean

java - 如果 JUnit 测试在没有 @RunWith 注释的情况下也能按预期工作,为什么还要向我的 JUnit 测试添加 @RunWith 注释呢?

java - 如何查看 Tomcat 正在使用/访问的 jar?

java - Drools Fusion规则语言: pedometer rule