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().
user7605325