Почему эта дата не на неделе следующего года? (C # календарь) - PullRequest
4 голосов
/ 31 января 2012

Я хочу вычислить номер недели для данной даты.

DateTime date = Convert.ToDateTime("31.12.2001");

DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
System.Globalization.Calendar cal = dfi.Calendar;

int weekOfYear = cal.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek,  
   dfi.FirstDayOfWeek);

В моем DateTimeFormatInfo первый день недели - понедельник.Я хочу использовать правило четырех дней, означающее, что неделя относится к году, в котором лежит большинство ее дней.31 декабря 2001 года - понедельник, и он должен быть на первой неделе 2002 года. Однако weekOfYear возвращается как 53.

Кто-то знает, что не так?

1 Ответ

4 голосов
/ 31 января 2012

См. документацию для CalendarWeekRule для точных правил.Короче говоря, 31 декабря никогда не будет первой неделей, это всегда будет что-то вроде 52/53.Значения перечисления влияют на то, какая неделя будет в первых числах января.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...