我的操作系统是Windows Server 2012 R2
我服务器的时区是UTC +3İstanbul。
然而,当我运行此代码时,它给了我:
委内瑞拉时间 美国/加拉加斯
我运行的代码:
System.out.println(TimeZone.getDefault().getDisplayName());
System.out.println(TimeZone.getDefault().getID());
JVM存储默认时区信息的位置以及如何更改?
请注意:
问题不是代码,我在这台服务器上运行Informatica。我只是把代码放在一个例子中。我想更改使用TimeZone.getDefault()。getDisplayName()检索的信息。在哪里和如何?我当地的时钟是土耳其
由于
答案 0 :(得分:1)
将jvm传递给变量-Duser.timezone 见How to set a JVM TimeZone Properly
或者参见Oracle关于此主题的参考https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/time-zone002.html
答案 1 :(得分:0)
如果您使用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"));