Ошибка в подсчете WeekNumber .NET?

У меня довольно странная проблема. Я живу в Дании, и здесь первая неделя (1-я неделя) 2013 года начинается 31 декабря 2012 года и длится 7 дней - как обычно делают недели :)

Согласно .NET, однако, 30 декабря - 52-я неделя, 31-го - 53-я неделя, а 1 января - 1-я неделя.

Неделя 53 длится всего один день, а неделя 1 - 6 дней. Ясно, что это должно быть неправильно (неделя, состоящая из менее чем 7 дней) и, безусловно, неправильно в датском контексте. Где 31 декабря - неделя 1, а не неделя 53.

Следующий код иллюстрирует проблему (CurrentCulture is & quot; da-DK & quot;)

    static void Main(string[] args)
    {
        //Here I get Monday
        DayOfWeek firstDayOfWeek = DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek;             
        //Here I get FirstFourDayWeek
        CalendarWeekRule weekRule = DateTimeFormatInfo.CurrentInfo.CalendarWeekRule; 

        DateTime date = new DateTime(2012,12,30);

        for (int i = 0; i <= 10; i++)
        {
            DateTime currentDate = date.AddDays(i);
            Console.WriteLine("Date: {0} WeekNumber: {1}",
                currentDate.ToShortDateString(),
                CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(currentDate, weekRule, firstDayOfWeek));
        }
        Console.ReadLine();
    }

Я сделал что-то не так или это ошибка в .NET? Если последнее - есть ли у вас предложения для правильного расчета номера недели?

Ответы на вопрос(6)

Ваш ответ на вопрос