Entweder verstehe ich die Methode nicht getActualMaximum(int)
oder das Feld WEEK_OF_YEAR, oder es ist ein Sun-Bug involviert (oder alle drei)...könnte mir jemand erklären, warum (zumindest in einem deutschen Lokal ...) den folgenden Code:
Locale.setDefault( Locale.GERMAN );
Calendar c = Calendar.getInstance();
c.set( Calendar.YEAR, 2010 );
c.set( Calendar.MONTH, 0 );
c.set( Calendar.DAY_OF_MONTH, 1 );
System.out.println("max: "+c.getActualMaximum( Calendar.WEEK_OF_YEAR ));
System.out.println("actual: "+c.get( Calendar.WEEK_OF_YEAR ));
erzeugt die folgende Ausgabe:
max: 52
actual: 53
Hier ist die Javadoc von getActualMaximum(int)
:
Gibt den maximalen Wert zurück, den die angegebene Kalenderfeld haben kann, angesichts des Zeitwerts dieses Kalenders. Zum Beispiel kann der tatsächliche Höchstwert des Feldes MONTH in manchen Jahren 12 Jahren und 13 in anderen Jahren im hebräischen Kalendersystem.
bearbeiten
Die Handlung verdichtet sich. In einem englischen Lokal ( -Duser.language=en -Duser.country=us
) ist die Ausgabe:
max: 52
actual: 1
Es scheint ein Sun-Bug für deutsche Länder zu sein?