Du setzt das Locale falsch. Probier es mal mit den statischen Locals in der Local class
Java:
Locale loc=Locale.GERMAN;
Edit:
Bzw nehm GERMANY, GERMAN ist nur die Sprache.
Falls du den Constructor verwenden willst, was ich nicht machen würde wenn es schon statisch Locals gibt: new Local("DE", "de");
java.util.Calendar ist etwas veraltet. Besser du verwendest die Klassen aus java.time.*
Java:
LocalDate date =LocalDate.now();for(int i =0; i <12; i++){
date = date.plusMonths(1);System.out.println(date.getMonth().getDisplayName(TextStyle.FULL,Locale.GERMANY));}
Das ist nicht ganz korrekt, es soll die "Langform des Namens fuer diesen Monat laut Locale" ausgegeben werden. Je nach Locale kann das natuerlich fuer den November jeder Wert zwischen "N" und "Fritzeridudli" sein. Die Locale bestimmt was in diesem Fall ausgegeben wird.
Da du dir hier eine neue Locale erzeugst, ist es etwas schwer zu sagen auf was genau zurueck gefallen wird. Die neue Locale zieht sich Standardwerte und verwendet diese beziehungsweise gibt es eine Infrastruktur welche auf den Locales aufbaut um die richtigen Werte zu haben. Auf meinem Systen zum Beispiel, kommt hier sehr wohl "November" als Ausgabe heraus. Du erzeugst diese auch mit "ungewohenlichen" Werten, fuer gewohenlich wird der Sprach- und Landcode verwendet, zum Beispiel new Locale("de", "DE"). Wie die anderen bereits gesagt haben, gibt es aber die statische Locale.GERMAN oder Locale.GERMANY welches konfiguriert sein sollte fuer die "korrekte" Lang-Ausgabe.
Das mit dem statischen Locale.German hat erst mal funktioniert.
Zum Thema Calendar habe ich noch eine Frage: Was bewirkt das Setzen von
setFirstDayofWeek. Ich dachte dass sich damit der int Wert für den aktuellen Wochentag ändert. Also wenn Wochenstart der Montag ist und es ist Mittwoch dann kommt da eine 2 zurück. Wenn Wochenstart Sonntag ist dann eine 3. So scheint es aber nicht zu sein. Wie wirkt diese Methode?
Java:
int dow= cal.get(Calendar.DAY_OF_WEEK);System.out.println("Day of Week="+dow);
cal.setFirstDayOfWeek(Calendar.THURSDAY);
dow=cal.get(Calendar.DAY_OF_WEEK);System.out.println("Day of Week="+dow);Hier kommt 2x das Gleiche heraus.
Calender ist ein graus und es ist da immer extrem wichtig die API Doc zu lesen
Calender.get liefert einen int, der ja nach dem, was du als Konstante rein gibst ein Wert ist (Bei Tag im Monat oder Jahr z.B.) oder die ID eines 0-basierten Enums (Wie bei Wochentagen oder Monaten).
Das heißt, wenn du dir den Monat geben lässt - da das ein Enum ist - kommt 0 für Januar und 11 für Dezember raus. Intuitiv ist was anderes