Kalenderwoche C # Datetime

8

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?

    
Nicolas 11.04.2012, 08:49
quelle

6 Antworten

8

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.

Berechne das Datum aus der Wochennummer

    
KingCronus 11.04.2012 08:51
quelle
4
%Vor%

Ich denke, wenn Sie CalendarWeekRule.FirstFourDayWeek zu CalendarWeekRule.FirstDay ändern, wird das funktionieren.

ich ändere das, dann funktioniert es gut.

    
Qmash 03.01.2013 03:48
quelle
1

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.

    
basti 11.04.2012 08:57
quelle
1

Sie können die Klasse Woche des Zeitraums verwenden Bibliothek für .NET unterstützt die ISO 8601 Wochennummerierung:

%Vor%     
Jani 11.04.2012 10:01
quelle
0

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.

    
Nick 11.04.2012 08:52
quelle
0

1/1/2012 es war Sonntag. Ich glaube, deshalb bekommst du 52, weil es der letzte Tag der letzten Woche war. Für den 2. Januar sollten Sie das richtige Ergebnis bekommen.

    
lszk 11.04.2012 08:52
quelle