System.Globalization.Calendar の GetWeekOfYear メソッドは、単にその日付が含まれる週の、年頭からの週番号を返すだけです。引数で指定された週ルールは使用されません。たとえば、週の最初の曜日が日曜日で、週ルールが1月1日の場合、2000年12月31日(日)は1を返す必要があります。代わりに54を返し、2001年1月1日(月)が1を返します。
このルーチンは、WeekRule と FirstDayOfWeekResolved に基づいて、指定された日付の正しい週番号を返します。
指定された日付の属する年とは異なる年の週番号が返される場合があります。 たとえば、週ルールが1月1日で、週の最初の曜日が日曜日の場合、2000年12月31日は1を返します。 これは、この日付が2001年の最初の週に当たるためです。