System.Globalization.Calendar.GetWeekOfYear () возвращает нечетные результаты

Я занимаюсь вычислением номеров недель для дат, но System.Globalization.Calendar возвращает нечетные результаты за (среди других лет) декабрь 31-е число 2007 и 2012 годов.

Calendar calendar = CultureInfo.InvariantCulture.Calendar;
var date = new DateTime(2007, 12, 29);
for (int i = 0; i < 5; i++)
{
    int w = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
    Console.WriteLine("{0}\t{1}", date.ToString("dd.MM.yyyy"), w);
    date = date.AddDays(1);
}

Результаты

29.12.2007      52
30.12.2007      52
31.12.2007      53 <--
01.01.2008       1
02.01.2008       1

29.12.2012      52
30.12.2012      52
31.12.2012      53 <--
01.01.2013       1
02.01.2013       1

Насколько я понимаю, в 2007 и 2012 годах не должно быть 53 недели, но дни должны быть включены в неделю 1. Есть ли способ изменить такое поведение в календаре ?

13
задан sshow 10 January 2012 в 19:19
поделиться