Calendar rechnet möglicherweise falsch

Status
Nicht offen für weitere Antworten.

heidiweber

Aktives Mitglied
Hallo,

ich muss aus Datumswerten die Anzahl der Tage berechnen.

Dies mache ich so:

Code:
String vonDat = "19800101";
String bisDat = "20600605";

Calendar vonDatCal = new GregorianCalendar(Integer.valueOf(vonDat.substring(0, 4)), Integer.valueOf(vonDat.substring(4, 6)), Integer.valueOf(vonDat.substring(6, 8))); 

Calendar bisDatCal = new GregorianCalendar(Integer.valueOf(bisDat.substring(0, 4)), Integer.valueOf(bisDat.substring(4, 6)), Integer.valueOf(bisDat.substring(6, 8))); 

                
long diffDays = (bisDatCal.getTimeInMillis()-vonDatCal.getTimeInMillis())/(24*60*60*1000); 

System.out.println(diffDays + 1);

Als Ausgabe kommt: "29375" Tage

Berechne ich die Anzahl der Tage mit Excel, kommt: "29377". Was meiner Meinung auch richtig ist, da ich vor Jahren selbst eine Funktion geschrieben habe, die die Anzahl der Tage berechnet (es sollten auch Schaltjahre berücksichtigt werden) und da kommt auch "29377" heraus.

Wäre Excel nicht von Microsoft, würde ich das Ergebnis auch 100%ig vertrauen:) Da aber meine Funktion auch dieses Ergebnis liefert, denke ich schon, dass dieser Wert korrekt ist. Gibt es irgendwo im Netz eine Seite, mit der man die Anzahl der Tage 1ßß% korrekt berechnen kann?

Falls der berechnete Wert aus Java nicht korrekt sein sollte (oder gibt es dafür eine plausible Erklärung), wie kann man sonst mit Java-Boardmitteln die Anzahl der Tage korrekt berechnen? Ist dies ein bekannter Bug in Java?

Vielen Dank schon mal
Grüße
Heidi
 
G

GastsaG

Gast
Der java-Calendar zählt Monate ab 0, so haste quasi falsche Monate eingegeben.
Code:
        String vonDat = "19800101";
        String bisDat = "20600605";

        Calendar vonDatCal = 
                new GregorianCalendar(
                Integer.valueOf(vonDat.substring(0, 4)), Integer.valueOf(vonDat.substring(4, 6))+1, Integer.valueOf(vonDat.substring(6, 8)));
        Calendar bisDatCal = 
                new GregorianCalendar(
                Integer.valueOf(bisDat.substring(0, 4)), Integer.valueOf(bisDat.substring(4, 6))+1, Integer.valueOf(bisDat.substring(6, 8)));
        long diffDays = (bisDatCal.getTimeInMillis() - vonDatCal.getTimeInMillis()) / (24 * 60 * 60 * 1000);

        System.out.println(diffDays + 1);
 

heidiweber

Aktives Mitglied
Vielen Dank - sowas muss man einfach wissen - völlig unlogisch aber naja - man sollte halt gleich in die API schauen.

Nur warum?

Der java-Calendar zählt Monate ab 0, so haste quasi falsche Monate eingegeben.

Aber du meintest doch sicher "-1" und nicht "+1"?

Vielen herzlichen Dank

Grüße
Heidi
 
G

GastsaG

Gast
jetzt mal mit Taschenrechner nachgerechnet.. es müssen 29377 Tage sein, vorausgesetzt, der Tag vom von-Datum gehört dazu.

So kommste auf 29376. Dir fehlt ein Tag, weil das bis-Datum auf 00:00 Uhr steht, denn später rechnest du mit millisekunden gefolgt von einer ganzzahligen division (long).
 
N

NeterPap

Gast
Das ist die Zukunft von Java.
Code:
import org.joda.time.DateTime;
import org.joda.time.Period;
import org.joda.time.PeriodType;

class UebungDays {

    public static void main(String[] args) {
        DateTime von = new DateTime(1980, 1, 1, 0, 0, 0, 0);
        DateTime bis = new DateTime(2060, 6, 5, 0, 0, 0, 0);
        Period p = new Period(von.getMillis(),  bis.getMillis(), PeriodType.days());
        System.out.println(p.getDays() + 1);
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
B Calendar Java Basics - Anfänger-Themen 5
N Erste Schritte Calendar.DAY_OF_YEAR Java Basics - Anfänger-Themen 3
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
I iCal Calendar mit Password und Username Java Basics - Anfänger-Themen 0
E Gregorian Calendar übergibt falschen Wochentag Java Basics - Anfänger-Themen 2
P Tag der Zeitumstellung Sommer->Winterzeit (Java Calendar) Problem Java Basics - Anfänger-Themen 5
S Calendar Neujahr Java Basics - Anfänger-Themen 10
T Calendar Methode roll(); Java Basics - Anfänger-Themen 2
J Calendar holidays Java Basics - Anfänger-Themen 4
L Datediff calendar Java Basics - Anfänger-Themen 3
D Java Date/Calendar Problem Java Basics - Anfänger-Themen 4
T Heutiges datum OHNE Calendar? Java Basics - Anfänger-Themen 9
M Calendar-Prüfung funktioniert nicht korrekt Java Basics - Anfänger-Themen 6
K Java Calendar Time Java Basics - Anfänger-Themen 10
N Fehler Calendar Java Basics - Anfänger-Themen 4
B Klassen Gregorian Calendar Java Basics - Anfänger-Themen 3
G Gregorian Calendar Eingabeprüfung Java Basics - Anfänger-Themen 4
M Calendar add-Funktion Java Basics - Anfänger-Themen 2
M Probleme mit Calendar Java Basics - Anfänger-Themen 9
0 Calendar - komme nicht weiter mit add Java Basics - Anfänger-Themen 2
lumo Datentypen Calendar to string und retour? Java Basics - Anfänger-Themen 4
S Calendar -- today Java Basics - Anfänger-Themen 4
N verständnisfrage java.util.Calendar Java Basics - Anfänger-Themen 4
W String zu Calendar parsen Java Basics - Anfänger-Themen 4
P (Arbeitstag-) Calendar - 9 anstatt 24 Stunden Java Basics - Anfänger-Themen 12
B Fehlermeldung für Calendar Java Basics - Anfänger-Themen 20
N Calendar Probleme Java Basics - Anfänger-Themen 5
G Gregorian Calendar aus toString() Ausgabe wiederherstellen Java Basics - Anfänger-Themen 4
A calendar Java Basics - Anfänger-Themen 6
K java.util.Calendar und Objekt Java Basics - Anfänger-Themen 7
C Problem Date / Calendar Java Basics - Anfänger-Themen 3
Paule Problem mit Date und Calendar Java Basics - Anfänger-Themen 3
W Gregorian Calendar Java Basics - Anfänger-Themen 5
S Calendar.set Time, Ermittlung der Anzahl Tage fehlerhaft Java Basics - Anfänger-Themen 9
G Probleme mit Konvertierung und Substraktion im Calendar Java Basics - Anfänger-Themen 4
S Konvertieren von Gregorian Calendar nach Date ? Java Basics - Anfänger-Themen 6
L Gregorian Calendar Problem Java Basics - Anfänger-Themen 7
S Calendar.set Methode Java Basics - Anfänger-Themen 4
V Vererbung Eclipse startet das Programm nicht und rechnet nicht Java Basics - Anfänger-Themen 6
X Wie Rechnet man in einer For-Schleife *? Java Basics - Anfänger-Themen 3
J Java rechnet -0.94 + 0.01 falsch Java Basics - Anfänger-Themen 14
Tsuna Threads Taschenrecher rechnet nicht!!! Java Basics - Anfänger-Themen 14
P Java rechnet falsch! (ab 6stelligen Zahlen) Java Basics - Anfänger-Themen 14
O Datentypen java rechnet ungenau Java Basics - Anfänger-Themen 10
Y rechnet java falsch? Java Basics - Anfänger-Themen 5
J Modulo-Operator rechnet falsch Java Basics - Anfänger-Themen 2
S Math.tan Problem rechnet falsches Ergebniss aus. Java Basics - Anfänger-Themen 3
G "Java rechnet falsch" bzw. ich weiss nicht warum. Java Basics - Anfänger-Themen 6
C Mein Programm rechnet lieber als dass es malt - warum? Java Basics - Anfänger-Themen 10
M Warum rechnet Java hier nicht richtig? Java Basics - Anfänger-Themen 3
sliwalker GUI-Taschenrechner rechnet nicht Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben