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

paddy3k

Mitglied
Hi,

ich habe folgenden Codeschnipsel und komm einfach nicht weiter :

Java:
		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

Gesperrter Benutzer
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

Mitglied
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
 

paddy3k

Mitglied
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 :)
 

Ähnliche Java Themen

Neue Themen


Oben