Füllen eines JXDatePicker-Obj. aus Calendar-Obj. klappt nicht

vfl_freak

Premium-User
Hallo zusammen,
ich bastele hier heute morgen schon seit Längerem mit den Klassen "JXDatePicker" und "Calendar" herum, ohne wirklich weiter zukommen!
Mein Problem: im JXDatePicker wird mir stets der falsche Monat (bspw. Juli statt Juni) angezeigt!

Ich habe folgenden Code (Ausschnitt) :
Java:
// dtMHD ist ein eigener Dateityp !
Calendar calMHD = Calendar.getInstance();
System.out.println( "dtMHD: Tag<" + dtMHD.getTag() + "> Monat<" + dtMHD.getMonat() + "> Jahr<" + dtMHD.getJahr() + "> !!" );                            
calMHD.set( dtMHD.getJahr(), dtMHD.getMonat(), dtMHD.getTag(), 0, 0, 0 );
calMHD.set( Calendar.MILLISECOND, 0 );  // Millisekunden setzen
System.out.println( "calMHD: Tag<" + calMHD.get(Calendar.DAY_OF_MONTH)+ "> Monat<" + calMHD.get(Calendar.MONTH) + "> Jahr<" + calMHD.get(Calendar.YEAR) + "> !!" );
jxdpMHD.setDate( calMHD.getTime() );

Die Ausgabe zeigt das korrekte Datum (aus der DB) :
Code:
dtMHD: Tag<30> Monat<6> Jahr<2010> !!
calMHD: Tag<30> Monat<6> Jahr<2010> !!

Wird anschließend die Maske mit dem JXDatePicker angezeigt, dann sehe dort als Datum stets "30.07.2010" :-(

Mache ich hier was falsch oder das "jxdpMHD.setDate( calMHD.getTime() );" :confused:

Danke und Gruß
Klaus
 
Zuletzt bearbeitet:
hmm, habe jetzt noch mal ein wenig rum gesucht und rum getestet ... scheinbar liefert die Funktion "jxdpMHD.setDate( calMHD.getTime() );" immer den Wert "Monat + 1"

Hab's jetzt etwas schmutzig gelöst, in dem ich den Monat, den ich aus der DB ermittele, dekrementiere :suspekt::rolleyes:

Das klappt wenigstens problemlos ...

Gruß
Klaus
 
Hi,

an sich macht dein Programm alles richtig.
Die Monate werden im Calendar und Date nur nicht von 1-12, sondern von 0-11 durchnummeriert.

Die Calendar.class enthält daher folgende Einträge:
Code:
public final static int JANUARY = 0;
[...]
public final static int JULY = 6;
[...]

Dementsprechend entspricht die Ausgabe
calMHD: Tag<30> Monat<6> Jahr<2010>
dem 30.07.2010.

Um das sauber zu umgehen musst du deinen eigenen Dateitypen (dtMHD) entsprechend anpassen, dass auch dieser die Monate mit den Werten 0-11 speichert.
 
Hallo muhrad,

Danke für Deine Bestätigung !
Das ist mir mittlerweile auch aufgegangen ;) und ich habe das Problem dementsprechend gelöst !

Gruß
Klaus
 
Zurück