C# DateTime: методы получения номера недели

Чтобы получить номер недели в C#, вы можете использовать различные методы. Вот несколько примеров:

Метод 1: использование метода Calendar.GetWeekOfYear

DateTime date = DateTime.Now; // Replace with your desired date
CultureInfo culture = CultureInfo.CurrentCulture;
CalendarWeekRule rule = culture.DateTimeFormat.CalendarWeekRule;
DayOfWeek firstDayOfWeek = culture.DateTimeFormat.FirstDayOfWeek;
int weekNumber = culture.Calendar.GetWeekOfYear(date, rule, firstDayOfWeek);
Console.WriteLine("Week number: " + weekNumber);

Метод 2: использование метода ISOWeek.GetWeekOfYearиз пространства имен System.Globalization(требуется пакет NuGet NodaTime)

DateTime date = DateTime.Now; // Replace with your desired date
int weekNumber = ISOWeek.GetWeekOfYear(date);
Console.WriteLine("Week number: " + weekNumber);

Метод 3: расчет номера недели на основе стандарта ISO 8601 вручную

DateTime date = DateTime.Now; // Replace with your desired date
DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(date);
int weekNumber = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
{
    weekNumber--;
}
Console.WriteLine("Week number: " + weekNumber);