WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Java: GregorianCalender (http://www.wcm.at/forum/showthread.php?t=194321)

Juro 28.06.2006 18:45

Java: GregorianCalender
 
Hi,
Offensichtlich stehe ich wieder einmal auf der Leitung ... dieses Mal mit Hilfe des GregorianCalender.

Ich bastel gerade an einem GUI welches einen Kalender anzeigt (mit diverser anderer Info, die aber jetzt nicht ausschlaggebend ist). Im Endeffekt ist das eine Tabelle mit Tagen (Montag >> Sonntag) als Spalten und Wochen als Zeilen. Da die Spalten gleich bleiben sollen, d.h. die Woche fängt immer mit Montag an, muss ich rausfinden um wieviele Stellen ich den ersten Tag einschieben muss, damit er am richtigen Wochentag steht.

Um Euch nicht zu verwirren werde ich meinen eigenen Code nicht hier reinstellen, irgendwie bin ich da nicht auf einen grünen Zweig gekommen.

Für Eure Hilfe wäre ich Euch dankbar.

lg
juro

T.dot 29.06.2006 08:52

Ohne es getestet zu haben:

GregorianCalendar cal = new GregorianCalendar();
cal.set( 2006, 0, 1 );
int iDayOfWeek = cal.DAY_OF_WEEK;

in iDayOfWeek sollte nun drinnstehen, der wievielte Tag der Woche der 1.1.2006 ist.

Juro 29.06.2006 12:04

Eben nicht. Soweit war ich auch schon :(

Der 1. Juni war ein Donnerstag, also der 4. Tag in der Woche.
Wenn ich Deinen Code durchführe bekomme ich für iDayOfWeek 7.
Ich bin mir sicher, daß das Problem mit der Logik des GregorianCalendars zu tun hat, man kann z.B. angebeben, wieviele Tage eine Woche mindestens hat (z.B. 5), dann fällt die kompletten ersten 5 Tage von Juni logikweise noch in den Mai ... oder so ähnlich :rolleyes: :confused:

T.dot 29.06.2006 12:59

So, hab mir das mal ernsthaft angeschaut. Nachdem DAY_OF_WEEK eine Static Variable ist kann das ja mal schon grundsätzlich nicht funktionieren. Diese braucht man aber nur, um auf die get Funktion des Kalenders zuzugreifen, welche dann einen sinnvollen Wert liefert.

GregorianCalendar cal = new GregorianCalendar();
cal.set( 2006, 0, 2 );
int iDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

zu beachten ist:
- beim set erwartet sich der Kalender 0 als 1. Monat, usw.
- die get Funktion liefert afaik einen Tag mehr als bei uns üblich (Woche beginnt mit Sonntag), dh. bei Donnerstag kommt 5 zurück.

mfg Thomas

Juro 29.06.2006 15:28

Code:

GregorianCalendar cal = new GregorianCalendar();
        cal.set(2006,5,1);
        int iDayOfWeek = cal.get(GregorianCalendar.DAY_OF_WEEK);
       
        System.out.println("Der erste Tag vom Juni war der " + iDayOfWeek + " Tag der Woche");

Ergibt:

Der erste Tag vom Juni war der 1 Tag der Woche


Kann irgendwie auch nicht ganz stimmen, immerhin war das ein Donnerstag. Immerhin war der 1.5. ein Montag ... :rolleyes:

T.dot 29.06.2006 15:49

Hiho!

Ich habs nochmal getestet, bei mir kommt für Juni (2006,5,1):
Der erste Tag vom Juni war der 5 Tag der Woche

für Juli (2006,6,1):
Der erste Tag vom Juli war der 7 Tag der Woche

Ich verwend hier aber Java 1.4.2, würd mich nicht wundern, wenns im 1.5er anders ist.

mfg Thomas


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag