我的操作系统是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"));