我有一个使用 Spring Boot 用 Java + 编写的微服务。我使用 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/