# Tag der Zeitumstellung Sommer->Winterzeit (Java Calendar) Problem



## paddy3k (21. Nov 2012)

Hi,

ich habe folgenden Codeschnipsel und komm einfach nicht weiter :


```
Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("CET"));
		cal.set(2012, 9, 27, 23, 0, 0);

		for(int i = 0; i < 6; i++)
		{
			DateFormat df = new SimpleDateFormat("HH:mm");

			String von = df.format(cal.getTime());

			cal.add(Calendar.HOUR_OF_DAY, 1);

			String bis = df.format(cal.getTime());

			LOGGER.debug(von + " - " + bis);
		}
```

Es werden also 5 Stunden durchlaufen von 23 Uhr am 27.10 diesen Jahres (noch Sommerzeit) bis 3 Uhr  des Folgetages an dem um 3 Uhr die Winterzeitumstellung erfolgte. Was mir das Programm ausgibt ist folgendes :

23:00 - 00:00
00:00 - 01:00
01:00 - 02:00
02:00 - 02:00 <-- Problem, angezeigt wird anscheinend die A-Stunde
02:00 - 03:00
03:00 - 04:00

meine Erwartung ist aber folgende, nämlich das das Intervall von 2-3 Uhr doppelt auftaucht :

23:00 - 00:00
00:00 - 01:00
01:00 - 02:00
02:00 - 03:00 <---
02:00 - 03:00
03:00 - 04:00

nun die große Frage... wie schaffe ich es das am Tag der Zeitumstellung dieses Intervall 2x auftaucht statt dieser ominösen 02:00 - 02:00 Uhr ?

Vielen Dank im Vorraus 

Gruß,
paddy


----------



## faetzminator (21. Nov 2012)

Nunja, IMHO wird nach 2:59 die Zeit von 3:00 auf 2:00 zurück gestellt. Insofern gibts tatsächlich gar kein zweites 3:00. Könntest du auch testen, wenn du einfach mal 59min addest.


----------



## paddy3k (21. Nov 2012)

ok so betrachtet hast du vermutlich Recht. Für meinen Anwendungsfall muss ich aber zwingend eine solche Ausgabe hinbekommen, auch wenn real nur eine 3. Stunde existiert.

Die Frage ist nun wie am einfachsten... der Tag der Zeitumstellung ändert sich ja auch von Jahr zu Jahr :/

Ich hab also jeweils ein Startdatum: im Beispiel Variable <von> ... beim addieren von jeweils einer Stunde bekomme ich also 2x 02:00 geliefert... das passt soweit und ist genau das was ich brauch... jedoch stimmt das Ende des Intervalls halt nicht (für meinen Fall), dort möchte ich dann auch jeweils 2x 03:00 geliefert bekommen


----------



## faetzminator (21. Nov 2012)

Ich kenne leider keine Lösung für dieses Problem.
Aber zumindest gäbs da die Umgehungslösung [c]von.equals(bis)[/c]...


----------



## paddy3k (21. Nov 2012)

hast recht, hät ich auch selber drauf kommen können... das wird als Übergangslösung vermutlich erstmal reichen. Diese Sommer/Winterzeit treibt mich i-wann nochmal in den Wahnsinn, leider komme ich aber nicht drum rum das korrekt zu behandeln da wir Software herstellen die mit Einzelstunden Intervallen Berechnungen durchführt :shock:

der Java Calendar scheint dafür nicht das non-plus-ultra zu sein, hier im Blog (Winterzeit und java.util.Calendar - unerwartetes Verhalten | Daniel Röder - Lebensräume) wird z.B. dieses Problem behandelt und die Bibliothek Joda-Time empfohlen... allerdings habe ich keine Zeit & Lust tausende Programmstellen jetzt umzustellen, von daher Danke nochmal für diese schlichte Lösung


----------



## faetzminator (21. Nov 2012)

Nunja, ich hoffe schon lange, dass diese Sommer-/Winterzeit abgeschafft wird...


----------

