Archive for February, 2010

Kalenderwochen-Nummerierung in .NET

Um die Realität auf der ganzen Welt einigermaßen widergeben zu können, ist das .NET-Framework sehr flexibel, wenn es darum geht, die Nummer einer Kalenderwoche zu ermitteln.

Der Methode CultureInfo.CurrentCulture.Calendar.GetWeekOfYear kann man sagen, welches der erste Wochentag ist und welche Regel anzuwenden ist, um die KW eines DateTime-Objekts zu identifizieren. Ich habe mich ab und zu gefragt, welche Einstellungen ich dabei für die beiden genannten Regeln treffen soll.

Wie gut, dass es für alles Normen gibt. In DIN 1355 ist nämlich unter anderem festgehalten, wie das für deutsche Kalender auszusehen hat:

  • Beginn der Woche ist Montag (was nebenbei den Mittwoch von seiner Rolle als Mitte der Woche enthebt)
  • KW 1 ist die Woche, zu der vier oder mehr Tage der ersten sieben Januartage zählen

Auf .NET angewendet heißt das:

CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(myDate, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)