GregorianCalendar Sommerzeit abziehen

Status
Nicht offen für weitere Antworten.

Schandro

Top Contributor
Morgen,

bei meinem Programm soll der Benutzer ein Datum mit Uhrzeit als String eingeben. Danach wird diese Eingabe in ein GregorianCalendar umgewandelt. Die Uhrzeit, soll aber immer in Winterzeit sein, d.h. wenn das Datum in der Sommerzeit liegt, soll 1 Stunde abgezogen werden.
Was ich bis jetzt hab:

if(datum.getTimeZone().inDaylightTime(datum.getTime())){
datum.add(Calendar.HOUR, -1);}

Das funktioniert aber nicht immer.
Es ist z.b. 3:30 ist, d.h. 30 Minuten nach anfang der Sommerzeit: Wenn ich jetzt 1 Stunde abziehe, ist die neue Uhrzeit: 0:30. Das liegt dadran, das es die Stunde zwischen 2 und 3 nicht gibt und sie deswegen übersprungen wird. Die Berechnungen, die danach kommen, sollen aber mit 2:30 rechnen.

Vllt. gibt es ja eine Methode, die das komplette Calendar system auf Winterzeit umstellt. Ich hab sie bis jetzt nur leider noch nicht gefunden (und ich hab hier schon viel Zeit reingesteckt).
 
nimm dir den long-Wert und subtrahiere eine Stunde in Millisekunden,
dann setzte diese Zeit in den Calandar, was kommt da raus?
 
Code:
import java.util.*;

public class Sommerzeit{
	public static void main(String[] args){
		GregorianCalendar d = new GregorianCalendar();
		d.set(1980,3,6,3,30,0); // an diesen Tag beginnt die Sommerzeit

		System.out.println(d.get(Calendar.HOUR)+":"+d.get(Calendar.MINUTE));
		if(d.getTimeZone().inDaylightTime(d.getTime())){
			System.out.println(" * * ziehe 1 Stunde ab * * ");
			d.add(Calendar.HOUR, -1);}
		System.out.println(d.get(Calendar.HOUR)+":"+d.get(Calendar.MINUTE));
	}
}

gibt es eine Möglichkeit, dass das Kalendersystem keine Sommerzeit kennt und deshalb 2 als Stunde ausgibt?
 
noch nie gemacht.. aber mach die eine eigene TimeZone:
mit SimpleTimeZone.
Ruf

setDSTSavings(int millisSavedDuringDST)
Sets the amount of time in milliseconds that the clock is advanced during daylight saving time.

auf und ruf der GregorianCalendar KOnstruktor mit der TimeZone auf....

könnte klappen
 
immerhin ist es nach dem Abziehen 1:30, also die ganz normale Zeit, nicht
> Es ist z.b. 3:30 ist, d.h. 30 Minuten nach anfang der Sommerzeit: Wenn ich jetzt 1 Stunde abziehe, ist die neue Uhrzeit: 0:30.
mit 0:30...

warum willst du das nun eigentlich kaputt machen? es gibt kein 2:30,
darum gehts doch gerade,
genausogut könntest du den 29. April in einem Nicht-Schaltjahr verlangen,

die Zeit wird übrigens durch ihre Darstellung nicht berührt,
was genau sind die Rechnungen, die danach kommen?,
falls diese die Zeit nicht in Stunden des Tages umrechnen, dürfte doch egal sein, ob Sommer oder Winter
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben