Hallo liebe Community.
Ich habe einen eigenen Kalender erstellt.
Die Klasse dazu sieht wie folgt aus:
Mein Problem ist Folgendes:
Wenn ich ein neuen Kalender erstelle:
MK = new MeinKalender(), enthält die kalenderWoche() Methode die korrekte Woche (heute 41).
Mache ich nun einen Switch mit der Methode MK = MK.switchCalenderStyle(6, 10, 2014); und gebe anschließend wieder kalenderWoche() aus, ist diese, selbst wenn ich den 06.10.2014 eingebe, nicht 41 sondern 45 soweit ich mich erinnere. Switche ich dann wieder zurück, ist die KW wieder 41.
Ich teste dies mit folgendem Code:
Die Methode switchCalenderStyle(6, 10, 2014); tut nichts anderes, als einen Kalender anzulegen, mit manueller Zeitangabe. (bei z.B. einem alten PC, der nicht mit dem Internet verbunden ist und somit nicht zwangsläufig das richtige Datum als Systemzeit hat)
Wovon hängt dies ab? Bzw. wo ist mein Fehler?
EDIT: Generell scheint es so, als müsste ich nur 4 subtrahieren, um die richtige KW zu bekommen. Doch woher kommt es, das diese 4 abgezogen werden müssen?
Ich habe einen eigenen Kalender erstellt.
Die Klasse dazu sieht wie folgt aus:
Java:
package ownobjects;
import java.util.Date;
import java.util.GregorianCalendar;
public class MeinKalender extends GregorianCalendar {
private boolean custom = false;
private MeinKalender currentCalender;
private int kalenderWoche = 0;
public int kalenderWoche()
{
kalenderWoche = this.get(GregorianCalendar.WEEK_OF_YEAR);
return kalenderWoche;
}
/**
* Erstellt einen Kalender automatisch nach der Systemzeit.
*/
public MeinKalender() {
super();
currentCalender = this;
custom = false;
}
/**
* Erstellt einen Kalender, um das Datum zu behandeln. Dabei werden Tag, Monat und Jahr selbst gewählt (sollte Systemzeit nicht aktuell sein).
* @param Tag
* Der zu verwendene Tag
* @param Monat
* Der zu verwendene Monat
* @param Jahr
* Das zu verwendene Jahr
*/
public MeinKalender(int Tag, int Monat, int Jahr) {
super(Jahr, Monat, Tag);
currentCalender = this;
custom = true;
}
/**
*
* @param Data
* Die ersten 3 Parameter werden benötigt.
* Parameter: Tag, 2. Parameter: Monat, 3. Parameter: Jahr.
* Werden keine oder weniger als 3 Parameter angegeben, wird die Systemzeit verwendet!
* @return umgewandelten Kalender
*/
public MeinKalender switchCalenderStyle(int...Data)
{
if (custom)
{
currentCalender = new MeinKalender();
}
else
{
if (Data.length > 2)
{
currentCalender = new MeinKalender(Data[0], Data[1], Data[2]);
}
}
return currentCalender;
}
}
Mein Problem ist Folgendes:
Wenn ich ein neuen Kalender erstelle:
MK = new MeinKalender(), enthält die kalenderWoche() Methode die korrekte Woche (heute 41).
Mache ich nun einen Switch mit der Methode MK = MK.switchCalenderStyle(6, 10, 2014); und gebe anschließend wieder kalenderWoche() aus, ist diese, selbst wenn ich den 06.10.2014 eingebe, nicht 41 sondern 45 soweit ich mich erinnere. Switche ich dann wieder zurück, ist die KW wieder 41.
Ich teste dies mit folgendem Code:
Java:
shell.addShellListener(new ShellAdapter() {
@Override
public void shellActivated(ShellEvent e) {
labelKWShow.setText(""+ MK.kalenderWoche());
MK = MK.switchCalenderStyle(06,10,2014);
System.out.println(MK.kalenderWoche());
MK = MK.switchCalenderStyle();
System.out.println(MK.kalenderWoche());
}
});
Wovon hängt dies ab? Bzw. wo ist mein Fehler?
EDIT: Generell scheint es so, als müsste ich nur 4 subtrahieren, um die richtige KW zu bekommen. Doch woher kommt es, das diese 4 abgezogen werden müssen?
Zuletzt bearbeitet: