更改Java时区(不适用于应用程序,整个服务器)

我的操作系统是Windows Server 2012 R2

我的服务器的时区是UTC +3伊斯坦布尔。

但是,当我运行这个代码时,它给了我:

委内瑞拉时间美洲/加拉加斯

我运行的代码是:

System.out.println(TimeZone.getDefault().getDisplayName()); System.out.println(TimeZone.getDefault().getID()); 

JVM在哪里存储默认的时区信息,我该如何改变它?

注意:
问题不是代码,我在这个服务器上运行Informatica。 我只是把代码放在一个例子中。 我想更改用TimeZone.getDefault()。getDisplayName()检索到的信息。 在哪里和如何? 我当地的时钟是土耳其

谢谢

将jvm传递给变量-Duser.timezone请参阅如何正确设置JVM时区

或者参阅Oracle对此主题的参考https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/time-zone002.html

如果使用TimeZone方法,它将从本地时钟检索时间,而不是您可以尝试使用下面的示例。

 Instant now = Instant.now(); System.out.println(now); ZonedDateTime dateTime = ZonedDateTime.ofInstant( now, ZoneId.of("Europe/Warsaw") ); System.out.println(dateTime); LocalDate localDate = LocalDate.of(2017, Month.MARCH, 26); LocalTime localTime = LocalTime.of(1, 0); ZonedDateTime warsaw = ZonedDateTime.of(localDate, localTime, ZoneId.of("Europe/Warsaw")); ZonedDateTime oneDayLater = warsaw.plusDays(1); Duration duration = Duration.between(warsaw, oneDayLater); System.out.println(duration); LocalDate localDate = LocalDate.of(2017, Month.APRIL, 2); LocalTime localTime = LocalTime.of(1, 0); ZonedDateTime warsaw = ZonedDateTime.of(localDate, localTime, ZoneId.of("Australia/Sydney"));