Java-Problem: Abstandsberechnung zwischen zwei Daten
Ich habe derweil ein Problem der nerdigen Art. Ich möchte in Java (die Sprache ist hier nicht so wichtig imo) den Abstand zwischen zwei Daten in Kalendertagen haben. Wichtig hierbei ist, dass ich nicht einfach den genauen Abstand in Tage umgerechnet will, sondern wirklich die dazwischen liegenden Kalendertage. Hierbei soll auch der erste Tag schon mitgezählt werden!
Übliche Lösung
- Mein Startdatum sei: der 23. Februar 2011 um 14:57h.
- Mein Enddatum sei: der 1. März 2011 um 09:17h.
Würde ich nun über den Umweg miliseconds gehen und folgenden Code nehmen:
Date d1 = new GregorianCalendar(2011, 2, 23, 14, 10).getTime();
Date d2 = new GregorianCalendar(2011, 3, 1, 9, 10).getTime();
long diff = d2.getTime() - d1.getTime();
System.out.println("Difference is: " + (diff / (1000 * 60 * 60 * 24)));
Komme ich auf eine Ausgabe von: Difference is: 8
Gewünschte Ausgabe wäre allerdings 7 Tage.
Lösungsvorschlag
Mein Lösungsansatz sieht im Pseudocode so aus:
date startDatum = "2011-02-23 14:57"
date endDatum = "2011-03-01 09:17"
// Berechne das Offset in miliseconds
offset = date2ms(startDatum) - date2ms("2011-02-23 00:00")
// offset beträgt jetzt 14 Stunden und 57 Minuten
// offset vom enDatum abziehen
neuesEndDatumTimestamp = date2ms(endDatum) - offset
date neuesEndDatum = createDateFromTimestamp(neuesEndDatumTimestamp)
// neuesEndDatum ist jetzt "2011-02-28 18:20"
// Berechnen der Differenz
timespan = datetime2ms(neuesEndDatum) - datetime2ms(startDatum)
diffDays = ms2days(timespan)
Wie sieht das aus? Meinungen? Kommentare? Her damit!
Comments !