Zeitdifferenzen unter Android 7 (API < 26) berechnen

jerevat

Mitglied
Hallo,

ich muss die Differenz zweier Daten (Plural von Datum) ermitteln und suche Alternativen zu LocalDate und ChronoUnit, da diese mind. API 26 voraussetzen und ich sie nicht verwenden kann.
Die maximale Zeitspanne beträgt 100 Jahre.
Welche Klasse bietet sich dafür an? Oder kennt jemand Formeln, die dies auf den Tag genau berechnen können? Stunden, Minuten etc. interessieren mich nicht, sondern nur ganze Tage.
Und wie man das aktuelle Datum unter diesen Voraussetzungen ermittelt, wäre auch gut zu wissen.
 
Vielen Dank. Die Bibliothek ist sehr hilfreich und hat mein Problem gelöst:

Java:
DateTime d0 = new DateTime(); // entspricht "now" = 2.11.2023
DateTime d1 = new DateTime(2023, 10, 1, 0, 0); // = 1.10.2023 

int diff = d0.getDayOfYear() - d1.getDayOfYear();
Toast.makeText(this, Integer.toString(diff), Toast.LENGTH_SHORT).show(); // = 32

Quelle: https://github.com/JodaOrg/joda-time/releases
(Die JAR Datei herunterladen, in den libs Ordner des Projektes einfügen, Rechtsklick darauf und "Add to ...." unten anklicken.)
 
Beachte dass du bei "lokalen" Daten und Uhrzeiten eventuell Schaltsekunden/Schalttage oder Zeitumstellungen verlierst. Fuer eine "genaue" Berechnung muesstest du immer Daten mit Zeitzonen verwenden.
 
Fuer eine "genaue" Berechnung muesstest du immer Daten mit Zeitzonen verwenden.
Wie sieht das in etwa aus?

Java:
DateTime d0 = new DateTime(2023, 1, 1, 0, 0);
DateTime d1 = new DateTime(2122, 1, 1, 0, 0);
int diff0 = Days.daysBetween(d0, d1).getDays(); // = 36159

DateTimeZone zone = DateTimeZone.forID("Europe/Berlin");
d0 = d0.withZone(zone);
d1 = d1.withZone(zone);
int diff1 = Days.daysBetween(d0, d1).getDays(); // = 36159

Wenn ich nur die Anzahl der Tage dazwischen wissen will, komme ich mit und ohne Zeitzone auf dasselbe Ergebnis, mit DateTime.
Wie es mit LocalDate (joda) aussieht, weiss ich nicht.
 

Neue Themen


Zurück
Oben