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

时间:2017-05-16 12:36:18

标签: java windows

我的操作系统是Windows Server 2012 R2

我服务器的时区是UTC +3İstanbul。

然而,当我运行此代码时,它给了我:

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

我运行的代码:

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

JVM存储默认时区信息的位置以及如何更改?

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

由于

2 个答案:

答案 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"));