Ich hatte ab und an zum Jahreswechsel eine fehlerhafte Kalenderwoche in meiner App. Daher wollte ich mir die Kalenderwoche möglichst sicher und damit natürlich immer richtig ermitteln. Da bin ich dann in der Dokumentation von DateTime, in der Beschreibung zu ToString über die URL https://unicode-org.github.io/icu/userguide/format_parse/datetime/#formatting-dates gestolpert. Auf dieser Seite gibt es ein “DATE FIELD SYMBOL TABLE”. Darin ist der Parameter “w” als “week of year” beschrieben.
Gemäß der ISO 8601 beginnt die erste Kalenderwoche im Jahr mit dem ersten Donnerstag.
Wenn ich mit var dt as new DateTime(2025,12,29)
ein Datum erzeuge, dann hat dt.WeekOfYear eine 53. Das ist korrekt.
Wenn ich mit var x as integer x = dt.ToString(“w”,locale.current).toInteger
die Kalenderwoche erzeuge, dann bekomme ich eine 1. Das ist falsch.
Ist meine Vorgehensweise mit dt.ToString(“w”…. falsch?
Ich benutze die betroffene App schon seit vielen Jahren (ca. 10 Jahre). Irgendwann einmal hatte ich Probleme mit WeekOfYear. Was genau das Problem war habe ich leider vergessen. Damals bin ich dann auf die “Lösung” mit ToString(“w”.. gekommen.
Vielleicht sollte ich zurück zu WeekOfYear gehen.
Ich glaub es war damals eine Differenz zur Apple Kalender App. Da kann man ja den ersten Tag der Woche einstellen. Je nachdem ob dort Sonntag oder Montag steht ändern sich im Dezember/Januar die Kalenderwochen. Damals habe ich in meiner App herumgebastelt um synchron zur Kalender-App zu sein.
Habe die ISO nochmal nachgelesen. Stimmt, es ist genau anders rum: Die 1 ist richtig, die 53 ist falsch.
Zitat aus der ISO: “Außerdem definiert die Norm, wie ihre Vorläufer seit den 1970er Jahren, den Montag als ersten Tag der Kalenderwoche. Als erste Kalenderwoche im Jahr wird die Woche mit dem ersten Januar-Donnerstag definiert, gleichbedeutend, dass diese mindestens vier Tage im neuen Jahr enthält.“
EDIT: Ich habe nicht aufgepasst und bin davon ausgegangen, das es um das kommende Jahr geht, nicht um das laufende. Ich lasse das trotzdem stehen, wail dadurch klar wird, dass man, um zu ermitteln ob die letzte Woche , di mit einem Datum im alten Jahr beginnt KW 52 oder 53 des alten Jahres, oder die KW 1 des nächsten ist, immer mit der Woche 1 des alten Jahres beginnen muss.
(Diese Aussage ist mein Fehler und ich ziehe sie zurück ich war vom 29.12.2026 ausgegangen: Nein, nach ISO, d.h. für Deutschland, ist die 53 richtig!)
Die KW 1 2026 hat am 29.12.2025 begonnen. Der 01.01.2026 war ein Donnerstag.
Wenn du nun die Wochen durchzählst, beginnt am 28.12.2026 die 53. Woche, die entweder KW 53 2026, oder KW 1 2027 ist. Da der erste Donnerstag im Januar 2027 aber auf den 07.01.2027 fällt, und damit nicht in dieser Woche liegt, gehört diese Woche also noch zum alten Jahr und ist demnach KW 53 2026.
Ich habe nicht recherchiert / ermittelt, ob es möglich ist, nur nach dem Ende des Jahres und dem Anfang des nächsten, sicher zu ermitteln, ob die letzte Woche die 52 oder 53 ist. Die Norm definiert nur, welche Woche die erste ist. Danach bleibt dir nicht viel mehr übrig, als durchzuzählen, bzw. die Anzahl Wochen, die seit dem Start dieser erste Woche vergangen sind zu ermitteln