Je veux obtenir l'actuel ZoneOffset de mon système.
J'ai essayé de le faire mais je n'ai pas trouvé de moyen.
Aussi, je cherchais une solution mais je n'en ai pas trouvé.
Est-il possible de faire cela en Java?
ÉDITER:
Ma question est différente de this . Je voudrais connaître l'UTC du système actuel, pas comment convertir entre la représentation de décalage TimeZone ou le stockage TimeZone.
Oui c'est possible:
ZoneOffset.systemDefault().getRules().getOffset(Instant.now())
ou vous pouvez remplacer l'instance instantanée par l'instance LocalDateTime:
ZoneOffset.systemDefault().getRules().getOffset(LocalDateTime.now())
Votre demande se compose de deux parties:
ZoneId.systemDefault()
Instant.now()
Ceux-ci sont liés ensemble à l'aide de ZoneRules
, pour obtenir les éléments suivants:
ZoneOffset o = ZoneId.systemDefault().getRules().getOffset(Instant.now());
Pour simplifier, vous pouvez utiliser OffsetDateTime
:
ZoneOffset o = OffsetDateTime.now().getOffset();
Cela fonctionne car OffsetDateTime.now()
utilise à la fois ZoneId.systemDefault()
et Instant.now()
en interne.