Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ubuntu和Windows上运行时,Java的时间缩短1小时_Java_Windows_Spring Boot_Ubuntu_Time - Fatal编程技术网

在Ubuntu和Windows上运行时,Java的时间缩短1小时

在Ubuntu和Windows上运行时,Java的时间缩短1小时,java,windows,spring-boot,ubuntu,time,Java,Windows,Spring Boot,Ubuntu,Time,我有一个使用SpringBoot用Java+编写的微服务。我使用Java版本1.8.0_221在Windows 10上开发了它。现在我想在Ubuntu 18.04上运行这个。在Ubuntu机器上,我有OpenJDK1.8.0_40-b25 当我在Windows机器上运行此程序时,控制台消息上显示的时间(我使用log4j2打印它们)和保存在数据库上的时间(在日期字段上使用@CreatedDate和@Temopral(TemporalType.TIMESTAMP)注释)是正确的,我的ZoneId.s

我有一个使用SpringBoot用Java+编写的微服务。我使用Java版本1.8.0_221在Windows 10上开发了它。现在我想在Ubuntu 18.04上运行这个。在Ubuntu机器上,我有OpenJDK1.8.0_40-b25

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

在我的Ubuntu机器上也是欧洲/伊斯坦布尔

然而,当我在Ubuntu机器上运行这个程序时,时间比我在终端上输入“日期”得到的系统时间晚了1个小时。我打印到控制台的日志和数据库插入的所有时间都被关闭了一个小时


我搜索了其他类似的问题,但它们都集中在时区上,我不认为在程序的任何部分我都在修改时区。另外,我的Ubuntu时间是正确的,这让我觉得我需要用JVM来改变一些东西,也许?

我试图在回答这个问题后更新时区数据库,但无法让它工作。因此,我决定删除OpenJDK并安装Oracle JDK 8,现在它可以正常工作。

windows和ubuntu显示的系统时间是否相等?不确定:土耳其在2019年更改了DST设置,您的ubuntu 18.04可能不知道。我没有使用土耳其时间或java更新语言环境特定数据的经验,但这将是一个非常平淡无奇的解释。查看UTC时间。是的,土耳其确实停止了夏令时,但我的ubuntu时间是正确的。我认为java会简单地拉动操作系统的时间。java有自己的时区数据库。这些注释来自Spring数据而不是Spring引导吗?如果是这样,你应该编辑你的标签和文本来讲述整个故事。你知道使用OracleJDK需要每年支付许可费吗?我不知道!我想我会尝试让OpenJDK工作。