Erster Tag eines gegebenen Monats

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?

Vielen Dank,
MysteriX

Was hast du denn versucht und wieso hast du es nicht hinbekommen?
Ein wenig Suchmaschinen Arbeit und schon gibts ne Lösung :smiley:

http://answers.yahoo.com/question/index?qid=20070818083901AABVBA6

Willst du wissen wie man es sich für einen Kalendar ausrechnet oder wie es Java für einen ausrechnet?

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.

ganz schön aufwendig

kürzer
[spoiler]

	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;
	}

[/spoiler]

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.