Hi,
ich komme von der Sprache C# und versuche mich gerade in Java einzuarbeiten. Ich möchte wissen, welcher der erste Wochentag eines gegebenen Monats ist. Ich gebe also z.B. September 2013 vor und er müsste mir sagen “Sunday”, weil der 01.09.2013 ja ein Sonntag ist. Ich habe einiges versucht, es jedoch leider nicht hinbekommen. Hat jemand einen Tipp, wie das zu realisieren ist?
Habs jetzt folgendermaßen hinbekommen (Danke für die Links):
Date dtKalender = new Date();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2013); //Für 2013
calendar.set(Calendar.MONTH, 9); // Für Oktober
intLetzterTag = calendar.getActualMaximum(Calendar.DATE); //Damit bekomme ich den letzten Tag heraus (Sprich ob der Monat 28, 30 oder 31 Tage hat)
calendar.set(Calendar.DAY_OF_MONTH, 1);// Damit setzt man den Kalender auf den 1. Tag des Monats, wenn ich es richtig verstanden habe
strErsterTag = calendar.getTime().toString().substring(0, 3); //An dieser Stelle hole ich mir die 1. 3 Zeichen des Datumstrings (siehe weiter unten)
int Wochentag = 0;
if (strErsterTag.equals("Mon"))
Wochentag = 7;
if (strErsterTag.equals("Tue"))
Wochentag = 1;
if (strErsterTag.equals("Wed"))
Wochentag = 2;
if (strErsterTag.equals("Thu"))
Wochentag = 3;
if (strErsterTag.equals("Fri"))
Wochentag = 4;
if (strErsterTag.equals("Sat"))
Wochentag = 5;
if (strErsterTag.equals("Sun"))
Wochentag = 6;
Ist sicher nicht der eleganteste Weg, aber er funktioniert. Danke
Schau dir mal den letzten Link an int firstDayOfMonth = c.getActualMinimum( Calendar.DAY_OF_MONTH);
Dort bekommst du direkt ein int, wobei ich nicht ganz verstehe warum der Montag bei dir Tag 7 und der Dienstag bei dir Tag 1 ist ^^
PS: Variablennamen schreibt man immer klein (camelCase), hast du auch großteils “Wochentag” müsste noch geändert werden
PPS: Um Nullpointer zu umgehen, sollte man statt strErsterTag.equals("Mon") es umdrehen ("Mon").equals(strErsterTag)
PPPS: Um JavaCode einzufügen hier im Forum einfach [ java] hier der codee ``` um den Code einfügen, bzw in der erweiterten Ansicht auf das Java Symbol (mittig) in der letzten Reihe.
public int getWeekdayOfFirstDayOfMonth(int jahr, int monat, int tag) {
int wochentag;
Calendar cal = Calendar.getInstance();
cal.set(jahr, monat, tag);
wochentag = cal.get(Calendar.DAY_OF_WEEK);
//Zaehlung faengt mit Sonntag an (1)
//DAY_OF_WEEK sind Konstanten
//setFirstDayOfWeek(Calendar.MONDAY) fuer Anzahl Wochen im Jahr
if (wochentag == 1) {
wochentag = 7;
} else {
wochentag--;
}
return wochentag;
}
Nun, diese Methode kann dir unter Umständen Probleme bereiten: LINK
Von der Sache her kannst du dir deine Wochentagumrechnung sparen, da dein Betriebssystem der JVM mitteilt, dass an deinem Standort der erste Tag der Woche der Sonntag ist.