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)

2 Responses to “Kalenderwochen-Nummerierung in .NET”

  • Markus:

    Leider liefert die Funktion nicht das richtige Resultat. Zb. der 31.12.2007 würde in der KW 1 liegen, die Funktion liefert aber KW 52. Scheisse nicht? Nicht traurig sein. Der Otter weis wies geht: http://www.vbarchiv.net/tipps/details.php?id=1662

    PS. Ich heisse auch Markus :)

  • Hallo Markus,

    danke für die Ergänzung. Ohne mich jetzt näher damit beschäftigt zu haben: Der Otter schreibt, dass es in der ersten KW zu falschen Angaben kommen kann. Schade eigentlich.

    Gruß

    Markus

Leave a Reply