# Anzahl Tage zwischen zwei Daten - Stunde fehlt?



## trmx (27. Mrz 2008)

Hallo!

Ich hoffe einer kann mir bei folgendem Problem helfen. Ich habe eine Methode geschrieben, welche die Anzahl
der Tage zwischen 2 beliebigen Daten zurückliefert. Dazu rechne ich aus der Differenz der Millisekunden der
Date-Objekte die Tage aus.

Durch Zufall sind wir nun auf ein Problem gestoßen.

Hier ein Code-Schnipsel:

```
GregorianCalendar gc = new GregorianCalendar(2008,2,30);
        long l1 = gc.getTimeInMillis();
        GregorianCalendar gc2 = new GregorianCalendar(2008,2,31);
        long l2 = gc2.getTimeInMillis();
        System.out.println(l2-l1);
```

Warum kommen hier "nur" 82800000 Millisekunden (also 23 Stunden) heraus  :bahnhof: 
Ich dividiere die Millisekunden dann mit (1000 * 60 * 60 * 24) und caste das ganze auf int.
Durch die "fehlende" Stunde kommt dann allerdings ein Tag zuwenig heraus. 

30 + 31 März 2007 sowie jedes andere Datum funktionieren. Alle Zeiträume die über den 31. März 2008
gehen weisen diesen Fehler auf.

Java-Version: 1.5.0_12

Hat vielleicht jemand eine Idee?


----------



## clemson (27. Mrz 2008)

Hallo!

Ich habe zwar keine Lösung für dein Problem, allerdings verwende ich für solche Sachen die Bibliothek JodaTime. Diese stellt unter anderem elegante Methoden zur Berechnung von Zeitdifferenzen zwischen zwei verschiedenen Datums/Dati/Datumschen (oder was auch immer der Plural von Datum ist  ) bereit.

mfg


----------



## trmx (27. Mrz 2008)

Hallo!

Danke für deine Antwort! JodaTime kannte ich noch nicht. Sieht aber wirklich sehr gut aus. Werde mich einmal
darin einarbeiten.

Bin allerdings bereits selber auf die "Lösung" gekommen. Es liegt an der Sommerzeit   
Letzter Sonntag im März... und der GregorianCalendar weiß natürlich davon  :lol: 


```
gc.setTimeZone(TimeZone.getTimeZone("UTC"));
```
und schon hat der Tag wieder 24 Stunden :wink: 

naja - ich bin halt eingefahren damit, wenigstens weiß ich jetzt dass ich die Uhren am Sonntag umstellen muss

mfg
Michael


----------

