Hallo,
für eine App, die an besondere Ereignisse erinnern soll, habe ich die Differenz zwischen dem aktuellen Tag und dem Tag des auszuwertenden Ereignisses über folgende Funktion berechnet:
Mit jr, mn, und tg werden das Jahr, der Monat und der Tag des auszuwertenden Ereignisses übergeben. Auf das aktuelle Datum wird über die global definierten Variablen Jahr, monat und tag zurückgegriffen.
getTimeInMillis() soll für die jeweiligen Tage die Zeit in Millisekunden zurück liefern. Aus der Differenz der beiden Werte wird über den Ausdruck (int) ((jt - ht) / 1000 / 60 / 60 / 24) die Differenz in Tagen berechnet und der aufrufenden Funktion übergeben. Das hat bisher immer funktioniert.
Nun habe ich einen Fall, der möglicherweise mit dem Schaltjahr (2016) zusammenhängt, in dem das Ergebnis falsch ist. Für ein Beispiel habe ich als aktuellen Tag den 02.02.2016 eingestellt. Auszuwerten waren ein Ereignis am 12.02.2016 (Differenz 10 Tage) und eines am 02.03.2016 (Differenz 30 Tage).
Ich denke, dass ich mich nicht verrechnet habe, denn sowohl CALC wie auch Excel kommen zum selben Ergebnis. Hier ein Bild von CALC:
und hier nun ein Bild von dem Ergebnis, zu dem die Funktion getDiff2heute() kommt.
Die Differenz für Konrad ist richtig, die für Demetrio dagegen falsch.
Setze ich den aktuellen Tag zum Beispiel auf den 01.03.2016 ist das Ergebnis dagegen auch für Demetrio wieder richtig.
Wer hat dafür eine Erklärung und wer weiß, ob dieser Fehler eventuell verhindert werden kann?
MfG, kodela
für eine App, die an besondere Ereignisse erinnern soll, habe ich die Differenz zwischen dem aktuellen Tag und dem Tag des auszuwertenden Ereignisses über folgende Funktion berechnet:
Java:
private int getDiff2heute(int jr, int mn, int tg) {
GregorianCalendar jubeltag = new GregorianCalendar (jr, mn, tg);
GregorianCalendar is_heute = new GregorianCalendar (jahr, monat, tag);
long jt = jubeltag.getTimeInMillis();
long ht = is_heute.getTimeInMillis();
return (int) ((jt - ht) / 1000 / 60 / 60 / 24);
}
getTimeInMillis() soll für die jeweiligen Tage die Zeit in Millisekunden zurück liefern. Aus der Differenz der beiden Werte wird über den Ausdruck (int) ((jt - ht) / 1000 / 60 / 60 / 24) die Differenz in Tagen berechnet und der aufrufenden Funktion übergeben. Das hat bisher immer funktioniert.
Nun habe ich einen Fall, der möglicherweise mit dem Schaltjahr (2016) zusammenhängt, in dem das Ergebnis falsch ist. Für ein Beispiel habe ich als aktuellen Tag den 02.02.2016 eingestellt. Auszuwerten waren ein Ereignis am 12.02.2016 (Differenz 10 Tage) und eines am 02.03.2016 (Differenz 30 Tage).
Ich denke, dass ich mich nicht verrechnet habe, denn sowohl CALC wie auch Excel kommen zum selben Ergebnis. Hier ein Bild von CALC:
und hier nun ein Bild von dem Ergebnis, zu dem die Funktion getDiff2heute() kommt.
Die Differenz für Konrad ist richtig, die für Demetrio dagegen falsch.
Setze ich den aktuellen Tag zum Beispiel auf den 01.03.2016 ist das Ergebnis dagegen auch für Demetrio wieder richtig.
Wer hat dafür eine Erklärung und wer weiß, ob dieser Fehler eventuell verhindert werden kann?
MfG, kodela
Anhänge
Zuletzt bearbeitet: