Both return the default JVM time zone (at the end, Clock
calls 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