Zwar beginnt das Jahr immer am 1.1., allerdings nicht immer mit einem Sonntag oder Montag, also dem Tag, der laut getFirstDayOfWeek() die Woche beginnen lässt.
Der 1.1.2011 war ein Samstag, der 1.1.2012 ein Sonntag und der 1.1.2013 ein Dienstag. Da der 1.1. eine neue Woche beginnen lässt, ergibt sich die interessante Fragestellung, ob der 1.1. denn immer in der KW 1 liegen muss oder nicht. Die Antwort liefert das Wochennummerierungssystem und das ist – wie so vieles in Deutschland – in einer DIN-Norm geregelt. Damit der 1.1. in der KW 1 liegt, müssen in Deutschland mindestens 4 Tage in dieser ersten Woche liegen.
Ist es zum Beispiel nur 1 Tag, so liegt der 1.1. in der letzten KW des vorherigen Jahres, etwa in der KW 52. Da in Deutschland die Woche am Montag beginnt, heißt das bei 4 Tagen: Wenn der 1.1. am Montag, Dienstag, Mittwoch oder Donnerstag liegt, gehört er zur KW 1, andernfalls nicht.
Wer Kalender anzeigt und die Kalenderwochen einträgt, der muss so etwas wissen. In Deutschland beträgt die Grenze 4 Tage, aber das ist landesabhängig. Und genau für diesen Fall bietet die Calendar-Klasse eine Methode getMinimalDaysInFirstWeek(). Für Deutschland liefert sie 4, aber für viele andere Länder gibt sie 1 zurück.
warum liefern die Tests unerwartete Ergebnisse?
Die Tests in CalendarUtilsTesthabe ich wg. #3 habe ich vorerst ausgeschaltet, um zum complie-Ergebnis zu kommen.
Dto für BasicMonthViewUITest.assertWeekNumbers
Die Ursache liegt in der Initialisierung vom Calendar. Der Kalender für Deuschland wird mit Locale.GERMAN (also der Sprache) statt mit dem Land Locale.GERMANY initialisiert.
Dazu siehe Kap 5.6.7 :
Wann beginnt die erste Woche im Jahr?
Liegt der 1.1. immer in der der KW 1?
Zwar beginnt das Jahr immer am 1.1., allerdings nicht immer mit einem Sonntag oder Montag, also dem Tag, der laut
getFirstDayOfWeek()
die Woche beginnen lässt.Der 1.1.2011 war ein Samstag, der 1.1.2012 ein Sonntag und der 1.1.2013 ein Dienstag. Da der 1.1. eine neue Woche beginnen lässt, ergibt sich die interessante Fragestellung, ob der 1.1. denn immer in der KW 1 liegen muss oder nicht. Die Antwort liefert das Wochennummerierungssystem und das ist – wie so vieles in Deutschland – in einer DIN-Norm geregelt. Damit der 1.1. in der KW 1 liegt, müssen in Deutschland mindestens 4 Tage in dieser ersten Woche liegen. Ist es zum Beispiel nur 1 Tag, so liegt der 1.1. in der letzten KW des vorherigen Jahres, etwa in der KW 52. Da in Deutschland die Woche am Montag beginnt, heißt das bei 4 Tagen: Wenn der 1.1. am Montag, Dienstag, Mittwoch oder Donnerstag liegt, gehört er zur KW 1, andernfalls nicht.
Wer Kalender anzeigt und die Kalenderwochen einträgt, der muss so etwas wissen. In Deutschland beträgt die Grenze 4 Tage, aber das ist landesabhängig. Und genau für diesen Fall bietet die Calendar-Klasse eine Methode
getMinimalDaysInFirstWeek()
. Für Deutschland liefert sie 4, aber für viele andere Länder gibt sie 1 zurück.warum liefern die Tests unerwartete Ergebnisse?
Die Tests in
CalendarUtilsTest
habe ich wg. #3 habe ich vorerst ausgeschaltet, um zum complie-Ergebnis zu kommen. Dto fürBasicMonthViewUITest.assertWeekNumbers
Die Ursache liegt in der Initialisierung vom
Calendar
. Der Kalender für Deuschland wird mitLocale.GERMAN
(also der Sprache) statt mit dem LandLocale.GERMANY
initialisiert.