Seit Java 8 gibt es durch den JSR-310 eine neue API für Daten- und Zeitoperationen. Möchte man in dieser API die aktuelle Zeit ermitteln so würde dies so aussehen:
LocalDateTime now = LocalDateTime.now();
Dadurch erhält man die lokale Zeit des Rechners auf dem dieser Codeschnipsel ausgeführt wird. Damit ist das Problem auch schon beschrieben; man erhält nur die lokale Zeit. Wenn mehrere Systeme zusammen arbeiten soll, kann dies zu einem Problem führen. Natürlich könnte man ZonedDateTime nutzen:
ZonedDateTime now = ZonedDateTime.now();
Damit bleibt die Information über die verwendete Zeitzone erhalten. Benötigt man nun z.B. die UTC, also die koordinierte Weltzeit, so könnte man die Zeitdifferenz mittels:
now.getOffset()
ermitteln und diesen Wert für die Berechnung der UTC nutzen. Einfacher funktioniert es allerdings über den kleinen Umweg mit der Clock-Klasse:
LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
Damit befindet sich in der Variable now, das aktuelle Datum und die aktuelle Uhrzeit als UTC.