Any difference between java.time.Clock.systemDefaultZone (). GetZone () vs java.util.TimeZone.getDefault (). ToZoneId ()?

Is there any difference between them, given that both java.time.Clock.systemDefaultZone().getZone()and java.util.TimeZone.getDefault().toZoneId()returned to the same conclusion.

For example, this code

import java.time.Clock;
import java.util.TimeZone;

public class Main {

  public static void main(String[] args) {
    System.out.println("Clock.systemDefaultZone().getZone() : " 
        + Clock.systemDefaultZone().getZone());
    System.out.println("TimeZone.getDefault().toZoneId() : " 
        + TimeZone.getDefault().toZoneId());
  }

}

returns this output

Clock.systemDefaultZone().getZone() : Europe/Paris
TimeZone.getDefault().toZoneId() : Europe/Paris
+2
source share
2 answers

Both return the default JVM time zone (at the end, Clockcalls TimeZone.getDefault(), as explained in @Kiskae answer ), but this did not guarantee that all calls would always return the same value every time .

This is because the default time zone can be changed:

  • , JVM, . , Windows , Linux /etc/localtime ( /usr/share/zoneinfo) ( /) TZ. JVM , .
  • JVM , . , maintanance/infrastructure ( , ...), ( , , )
  • ( JVM) TimeZone.setDefault() method. , JVM, , , :

    TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));
    System.out.println(ZoneId.systemDefault());
    
    TimeZone.setDefault(TimeZone.getTimeZone("America/New_York"));
    System.out.println(ZoneId.systemDefault());
    
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    System.out.println(ZoneId.systemDefault());
    

:

/London
/New_York
UTC

, , . , Clock.systemDefaultZone().getZone() TimeZone.getDefault().toZoneId(), .

JVM, , JVM, . , .

, , , , , .

, , ZoneId.of("Europe/Paris"). IANA ( Region/City, America/New_York Europe/Paris). (, CET CEST), .

( , ), ZoneId.getAvailableZoneIds().

+3

grepcode, , . Clock.systemDefaultZone() ZoneId.systemDefault(), TimeZone.getDefault().toZoneId():

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/time/ZoneId.java#ZoneId.systemDefault%28%29

+4

Source: https://habr.com/ru/post/1685673/


All Articles