C# GregorianCalendar 计算某一天属于当年多少周

网上找了很多,都讲的不明白。最后看了官网总结了一下

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 指的是以一星期中哪一天为一周的起始

 

上一篇:三、七天入门django开发 - Django模型层


下一篇:利用EasyPoi导出大量数据到Excel