Ich habe folgenden Code, um die Wochenzahl des Jahres im DateTime-Objekt Time
zu erhalten %Vor%Nun gebe ich der Funktion das Datum 1/1/2012, das Woche 1 zurückgeben sollte, aber hes Rückkehr Woche 52. Und ich kann nicht scheinen, warum herauszufinden. Jeder hat eine Idee warum?
Der Algorithmus tut genau das, was Sie ihm angewiesen haben. Sie haben die CalanderWeekRule auf FirstFourDayWeek eingestellt. Der 1. Januar 2012 war nicht Teil der ersten viertägigen Woche, also hast du den Kalander angewiesen, ab dem 2. Januar zu zählen.
Die Wochennummer wurde korrekt berechnet. Sie sollten lesen, wie Wochenzahlen tatsächlich berechnet / gezählt werden (Wikipedia?!).
Achtung: Die eingebaute Berechnung der Wochenzahlberechnung ist fehlerhaft. Microsoft beschreibt das Problem im KnowledgeBase-Artikel 200299 . Es hat Probleme mit ISO-8601.
Sie können die Klasse Woche des Zeitraums verwenden Bibliothek für .NET unterstützt die ISO 8601 Wochennummerierung:
%Vor% Ich nehme an, dass, weil 1/1/2012 ein Sonntag war und GetWeekOfYear
sagt, dass er die Woche zurückgibt, die das Datum enthält, die letzte Woche von 2011 statt der ersten Woche von 2012 zurückgibt.
Schauen Sie sich die CalendarRule zur Klärung an.
Tags und Links c# datetime windows gregorian-calendar