网上找了很多,都讲的不明白。最后看了官网总结了一下
https://docs.microsoft.com/zh-tw/previous-versions/windows/silverlight/dotnet-windows-silverlight/s4wyw1wh(v=vs.95)
计算某一天属于当年多少周,主要还是区分一月一日是第几周,是去年的52,53 周,也就是现在的0周,还是说是今年的第一周
有不同的定义逻辑,主要分三种
1.指定某一天为一周的起点,多数以周一或者周日为一周的起点
2.完整的一周才算是第一周,假如一周以周一为起点,那么只要1月1日 不是周一,那么下个周一才算是第一周
3,大于等于4天在一周内才算第一周,不然下周才算是第一周。假如一周以周一为起点,1月1日是周四,那么 4,5,6,7 大于等于四天,这周是第一周
手动计算的话,容易应发BUG,因此建议使用C#提供的类 GregorianCalendar
引用命名空间 using System.Globalization;
//判断给定日期是第几周
DateTime dt = new DateTime(2018,1,1);//53 1 GregorianCalendar gc = new GregorianCalendar(); int i=gc.GetWeekOfYear(dt,CalendarWeekRule.FirstFullWeek,DayOfWeek.Sunday);
CalendarWeekRule 指的是上面的三种情况,这里不多说。
DayOfWeek 指的是以一星期中哪一天为一周的起始