Ошибка в подсчете 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? Если последнее - есть ли у вас предложения для правильного расчета номера недели?