Mit der java.time-API die UTC ermitteln

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.

Probleme mit der Zeitzone unter Kubuntu

Die aktuelle Kubuntu-Version 13.04 hat ein Problem mit der Zeitzone. Diese ist aus irgendeinem Grund auf UTC eingestellt. Versucht man das ganze zu ändern, bekommt man eine Fehlermeldung:

Authentifizierung nicht möglich, Aktion kann nicht ausgeführt werden: 6,

Auf der Konsole kann man das Problem dabei relativ schnell beheben:

dpkg-reconfigure tzdata
ntpdate pool.ntp.org

Weitere Informationen gibt es unter:
http://techlorebyigor.blogspot.de/2013/04/kudos-for-kubuntu-1304.html