using System.Globalization;
public static int GetIso8601WeekOfYear(DateTime time)
DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
public static void Main()
Console.WriteLine("Hello World");
var date = DateTime.Parse("2024-01-01");
Console.WriteLine(GetIso8601WeekOfYear(date));
date = DateTime.Parse("2024-01-07");
Console.WriteLine(GetIso8601WeekOfYear(date));
date = DateTime.Parse("2024-01-08");
Console.WriteLine(GetIso8601WeekOfYear(date));
date = DateTime.Parse("2024-01-14");
Console.WriteLine(GetIso8601WeekOfYear(date));
date = DateTime.Parse("2024-01-15");
Console.WriteLine(GetIso8601WeekOfYear(date));