Нужно получить номер недели. С первой неделей года всё понятно. А если первая неделя будет текущая (26.03 - 01.04) с учётом високосного года. Т.е. предыдущая неделя (19.03 - 25.03) была 52?
Считать недели можно по-разному. Можно считать первой неделю, в которой первое января. Можно считать первой неделю, в которой первый понедельник года. Можно считать первой неделю, бóльшая часть которой принадлежит новому году. Как именно считать — выбирать вам. В .NET за этот выбор отвечает энумерация System.Globalization.CalendarWeekRule.
Получить номер недели по дате можно так:
var dt = new DateTime(2017, 1, 1);
var cal = new GregorianCalendar();
var weekNumber = cal.GetWeekOfYear(dt, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);
// получается 52
Мы видим, что по правилу «год начинается с полной недели» 1 января 2017 года принадлежит 52-ой неделе прошлого, 2016 года.
Не знаю, правильно ли понял, что вы хотите сделать, но допустим:
У вас есть объект DateTime. Не знаю, как вы его получите, будь то DateTime.Now, DateTime.UtcNow, или как-то еще. Задача в определении того, какая по счету неделя идет для этой даты.
Тогда задача становится тривиальной:
DateTime myDateTime = DateTime.Now;
int firstDayOfYear = (int)new DateTime(myDateTime.Year, 1, 1).DayOfWeek;
int weekNumber = (myDateTime.DayOfYear + firstDayOfYear) / 7;
Тогда переменная weekNumber будет хранить значение, и при этом первая неделя будет 0, вторая - 1 и т.д. Если нужно считать недели, начиная с 1, то просто
int weekNumber = (myDateTime.DayOfYear + firstDayOfYear) / 7 + 1;
Как-то так.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости