CyborgBeta schrieb:Das ist eine andere Use-Case-Ebene.
Es ist jedenfalls ein 0815-Usecase für eine Date/Time API.
Zitat von dir von oben, habe den relevanten Teil mal fett markiert:
CyborgBeta schrieb:Nein, ja eben nicht (zumindest dieser Punkt). Die neue Time-Api ist viel länger und umständlicher zu schreiben (egal bei welchem Use-Case) => un-intuitiv.
Die 4 gezeigten Zeilen braucht man mit den alten APIs alleine, um eine Calendar-Instanz zu erzeugen und auf den 14. Juni zu setzen. Es sei denn, man verwendet Calendar.Builder und quetscht alles in eine lange Zeile, aber das ist eher nicht der Sinn eines Builders. Von der Datums-Arithmetik, die da nach kommt, haben wir dann noch nicht mal gesprochen. Und nichts davon ist Thread-safe. Und so weiter, und so fort.
H4110 schrieb:Will ich sehen, aber ohne ThreeTen-Extra. 😉
Code:
ZoneId zoneId = ZoneId.of("Europe/Berlin");
ZonedDateTime start = ZonedDateTime.of(2024, 3, 30, 21, 0, 0, 0, zoneId);
ZonedDateTime target = ZonedDateTime.of(2024, 6, 14, 21, 0, 0, 0, zoneId);
Duration d = Duration.between(start, target);
System.out.println(d.toDays() + " Tage, " + d.toHoursPart() + " Stunden");
Liefert zwischen denselben lokalen Uhrzeiten, jeweils 21 Uhr, 75 Tage und 23 Stunden. Die Stunde geht heute Nacht flöten.
Verschiebe die Tage beider Datumsangaben um jeweils einen Tag nach hinten (die Zeitumstellung fällt somit nicht ins Gewicht) und es sind 76 Tage und 0 Stunden.
Wenn man in der Ausgabe aus kosmetischen Gründen lieber ganze Tage und 0 Stunden zwischen verschiedenen Datumsangaben mit gleichen Uhrzeiten hätte (Zeitumstellung hin oder her), müsste man als Zwischenschritt die vollen Tage berechnen und dann noch das Delta zum Zieldatum als Stunden. Das wären dann vielleicht nochmal 2 Zeilen dazu, auch kein Aufwand.
Zuletzt bearbeitet: