Wie der Titel sagt, erstellen Sie ein java.util.GregorianCalendar -Objekt, sagen wir Kalender, und führen
aus %Vor%es gibt 6 zurück! Soweit ich weiß, sollte dies 5 Jahre sein %Code% gleich 31 und 31/7 == 4 mit einem Rest, d. h. es gibt höchstens 5 Wochen und somit kann ein Tag höchstens 5 Mal in einem Monat auftreten.
Fehle ich hier etwas?
Das javadoc gibt an:
Wenn zum Beispiel ein Monat 31 Tage hat, überlappt sich DAY_OF_WEEK_IN_MONTH -1 mit DAY_OF_WEEK_IN_MONTH 5 und dem Ende von 4.
Dies gibt zu, dass der Maximalwert 5 sein kann. Um einen Grund für den Wert sechs zu haben, müsste es einen Monat mit 36 Tagen geben, was auch bei Datums- / Uhrzeitkorrekturen nicht passieren sollte. Zumindest habe ich nichts dergleichen gefunden, das Informationen über den Gregorianischen Kalender überprüft.
Also, der Maximalwert sollte 5 sein.
Bearbeiten: Ich habe auch die Quelle der Referenzimplementierung überprüft und es gibt keinen Grund für den Wert 6.
Sie haben recht, es ergibt keinen Sinn. Für DAY_OF_WEEK_IN_MONTH
, um 6
zu sein, müsste es einen Monat mit 6 Montagen geben (zum Beispiel).
Der Grund warum seine 6 nicht 5 ist, weil im englischen Kalender der Starttag für eine Woche Sonntag ist. Wenn zum Beispiel der erste Tag eines Monats, sagen wir, der 1. Juli ist Sonntag, dann ist der 2. Juli bereits die nächste Woche. Da der Juli 31 Tage hat, enden Sie mit 6 Wochen.