4 Stimmen

Calendar.getActualMaximum(Calendar.WEEK_OF_YEAR) Seltsamkeit

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X