Dominik: GregorianCalendar zeigt falschen Wochentag

Beitrag lesen

Hallo,

ich erzeuge mit folgendem Code ein GregorianCalendar-Objekt:

  
// get current year to determine the current century  
Calendar cal = Calendar.getInstance();  
cal.setTime(new Date());  
// create time  
time = new GregorianCalendar(  
        year < 100 ? cal.get(Calendar.YEAR) / 100 * 100 + year : year,  
	month, dayOfMonth, hourOfDay, minute);  
time.setTimeZone(TimeZone.getTimeZone("CET"));  
time.set(GregorianCalendar.AM_PM, hourOfDay < 12 ? GregorianCalendar.AM  
	: GregorianCalendar.PM);  

Die Variablen year, month, dayOfMonth, hourOfDay und minute sind Methodenparameter vom Typ int.

Lasse ich mir nun das Datum mit folgendem Code ausgeben, erscheint immer der falsche Wochentag:

  
int hour = gregCal.get(GregorianCalendar.HOUR);  
if (gregCal.get(GregorianCalendar.AM_PM) == GregorianCalendar.PM) {  
	hour += 12;  
}  
int minute = gregCal.get(GregorianCalendar.MINUTE);  
int day = gregCal.get(GregorianCalendar.DAY_OF_MONTH);  
int month = gregCal.get(GregorianCalendar.MONTH);  
int year = gregCal.get(GregorianCalendar.YEAR);  
fw.write((hour < 10 ? "0" + hour : hour)+ ":"  
	+ (minute < 10 ? "0" + minute : minute) + " "  
	+ gregCal.getDisplayName(GregorianCalendar.DAY_OF_WEEK,  
		GregorianCalendar.SHORT,new Locale("de", "DE")) + ", "  
	+ (day < 10 ? "0" + day : day) + "."  
	+ (month < 10 ? "0" + month : month) + "."  
	+ (year < 10 ? "0" + year : year));  

fw ist dabei eine FileWriter und gregCal ein GregorianCalendar. Das ausgegebene Datum hat dann die Form:
20:31 Mo, 08.10.2010
Der 8.10.2010 ist allerdings ein Freitag.

Wie kann ich diese falsche Anzeige beheben?

Viele Grüße
Dominik