Die zeitbezogenen temporalen Typen bekommen ihre Zeit von einer Uhr. Die Uhr kombiniert die aktuelle Zeit mit einer Zeitzone; Java repräsentiert sie durch den Typ java.time.Clock. Der Klasse ist abstrakt und Exemplare sind über statische Fabrikmethoden zu bekommen:
Statische Clock-Mehoden | Rückgabe |
systemUTC() | Uhr mit genauster Zeit in der Greenwich/UTC Zeitzone |
systemDefaultZone() | Uhr mit genauster Zeit in der aktuellen Systemzeitzone |
tickMillis(ZoneId zone) | Uhr mit Millisekundenauflösung ohne Nanosekundenanteil in der gegeben Zeitzone (ab Java 9) |
tickSeconds(ZoneId zone) | Uhr mit Sekundenauflösung ohne Milli- und Nanosekundenanteil in der gegeben Zeitzone |
tickMinutes(ZoneId zone) | Uhr mit Minutenauflösung ohne Sekunden-, Milli- und Nanosekundenanteil in der gegeben Zeitzone |
tick(Clock baseClock, Duration tickDuration) | Uhr, die auf der Basis von baseClock in Abständen von tickDuration „tickt“ |
offset(Clock baseClock, Duration tickDuration) | Neue Uhr, die gegenüber der baseClock um tickDuration verschoben ist |
fixed(Instant fixedInstant, ZoneId zone) | Voreingestellte Uhrzeit, die sie nie ändert |
Clock-Exemplare erfragen
Die now()-Methoden der Klassen LocalTime, LocalDate, … nutzen standardmäßig die Uhr in der aktuellen Zeitzone:
public static LocalDate now() { return now(Clock.systemDefaultZone()); }
Abzulesen am Beispiel ist, dass die now(…)-Methode überladen ist, sodass ein Programm selbst eine Clock angeben kann. Das ist nützlich zum Testen, wenn zum Beispiel die Zeit immer die gleiche sein soll.