最近,要用到取得某一天是一年的第幾周,然後網路上查一下 其實不難
但是其中有一個參數是CalendarWeekRule 列舉
(https://msdn.microsoft.com/zh-tw/library/system.globalization.calendarweekrule(v=vs.110).aspx)
看了一下,他的敘述是
我相信會有點小一頭霧水,所以我特地挑了 2021年的一月做一個一目了然的測試 ,之後也方便我看,就有需要的參考一下,這邊先附上 2021 一月的 日曆

Code and Result :
Console.WriteLine("2021-01-01");
Console.WriteLine("CalendarWeekRule.FirstDay :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 01), CalendarWeekRule.FirstDay, DayOfWeek.Monday));
Console.WriteLine(("CalendarWeekRule.FirstFourDayWeek :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 01), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)));
Console.WriteLine(("CalendarWeekRule.FirstFullWeek :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 01), CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)));
//Result
//2021-01-01
//CalendarWeekRule.FirstDay :1
//CalendarWeekRule.FirstFourDayWeek :53
//CalendarWeekRule.FirstFullWeek :52
Console.WriteLine("2021-01-04");
Console.WriteLine("CalendarWeekRule.FirstDay :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 04), CalendarWeekRule.FirstDay, DayOfWeek.Monday));
Console.WriteLine(("CalendarWeekRule.FirstFourDayWeek :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 04), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)));
Console.WriteLine(("CalendarWeekRule.FirstFullWeek :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 04), CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)));
//Result
//2021-01-04
//CalendarWeekRule.FirstDay :2
//CalendarWeekRule.FirstFourDayWeek :1
//CalendarWeekRule.FirstFullWeek :1
Console.WriteLine("2021-01-05");
Console.WriteLine("CalendarWeekRule.FirstDay :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 05), CalendarWeekRule.FirstDay, DayOfWeek.Monday));
Console.WriteLine(("CalendarWeekRule.FirstFourDayWeek :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 05), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)));
Console.WriteLine(("CalendarWeekRule.FirstFullWeek :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 05), CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)));
//Result
//2021-01-05
//CalendarWeekRule.FirstDay :2
//CalendarWeekRule.FirstFourDayWeek :1
//CalendarWeekRule.FirstFullWeek :1
Console.WriteLine("2021-01-08");
Console.WriteLine("CalendarWeekRule.FirstDay :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 08), CalendarWeekRule.FirstDay, DayOfWeek.Monday));
Console.WriteLine(("CalendarWeekRule.FirstFourDayWeek :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 08), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)));
Console.WriteLine(("CalendarWeekRule.FirstFullWeek :" + new GregorianCalendar().GetWeekOfYear(new DateTime(2021, 01, 08), CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)));
//Reslut
//2021-01-08
//CalendarWeekRule.FirstDay :2
//CalendarWeekRule.FirstFourDayWeek :1
//CalendarWeekRule.FirstFullWeek :1