У меня довольно странная проблема. Я живу в дании, и здесь первая неделя (неделя 1) 2013 года начинается 31 декабря 2012 года и длится 7 дней - как обычно делают недели:)
Согласно .NET, однако 30 декабря - неделя 52, 31-я неделя 53, а 1 января - 1-я неделя.
Неделя 53 длится всего один день, а неделя 1 - 6 дней. Очевидно, что это должно быть неправильно (неделя, состоящая менее чем за 7 дней) и, конечно же, неверна в датском контексте. Где 31 декабря - неделя 1, НЕ неделя 53.
Следующий код иллюстрирует проблему (CurrentCulture - "da-DK" )
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? Если последний - есть ли у вас предложения по правильному подсчету недельных номеров?