Ich habe zwei Calendar-Objekte, bei denen ich den Zeitraum dazwischen berechnen möchte. Leider kriege ich bei meiner Berechnung immer ca. 24 Std. zuviel raus - weiß aber nicht, wieso.
Ich vermute, dass ich immer einen Tag zuviel berechne und die überflüssigen 24 Std. durch Rundungen nicht volle 24 Std. sind.
Ich tue folgendes:
Als Beispiel Daten habe ich
20.04.2006 16:31 und 23.05.2006 09:30 wo ich ca. 785 Std erwarte, aber ca. 808 Std. bekomme (auf die Minuten kommts mir nicht an, aber ein Tag ist mir doch etwas zuviel).
Bei kleinen Zeiträumen (z.B. 21.04.2006 09:31 und 21.04.2006 12:23) gibt es das Problem nicht. Ich vermute, dass ich irgendwie einen Tag zuviel berechne, finde aber nicht, wo.
Kann mir jemand erklären, wo ich die überflüssigen Stunden berechne? Bzw. wie ich sie wieder wegbekomme?
Als Beispiel Daten habe ich
20.04.2006 16:31 und 23.05.2006 09:30 wo ich ca. 785 Std
erwarte, aber ca. 808 Std. bekomme (auf die Minuten kommts mir
nicht an, aber ein Tag ist mir doch etwas zuviel).
Der April hat 30 Tage, der Mai 31. Wird diese Tatsache gewürdigt ?
Gemessen an der Problembeschreibung klingt das nämlich nicht so…
> long endL = end.getTimeInMillis()+
> end.getTimeZone().getOffset(end.getTimeInMillis());
> long startL = start.getTimeInMillis()+
> start.getTimeZone().getOffset(start.getTimeInMillis());
Lass den Offset weg. (das getTimezone gibt in deinem Fall 2x das gleiche zurück. Aber du weist nicht exakt welche Klasse… Ausserdem: der Offset wird maximal die Winterzeit rausbügeln. Das ist eine Stunde und du hast Tage Versatz)