1public static int WeekOfMonth(DateTime dtSel,bool sundayStart)
2{
3 //如果要判断的日期为1号,则肯定是第一周了
4 if (dtSel.Day == 1)
5 return 1;
6 else
7 {
8 //得到本月第一天
9 DateTime dtStart = new DateTime(dtSel.Year, dtSel.Month, 1);
10 //得到本月第一天是周几
11 int dayofweek = (int)dtStart.DayOfWeek;
12
13 //如果不是以周日开始,需要重新计算一下dayofweek,详细风DayOfWeek枚举的定义
14 if (!sundayStart)
15 {
16 dayofweek = dayofweek - 1;
17
18 if (dayofweek < 0)
19 dayofweek = 7;
20 }
21
22 //得到本月的第一周一共有几天
23 int startWeekDays = 7 - dayofweek;
24
25 //如果要判断的日期在第一周范围内,返回1
26 if (dtSel.Day <= startWeekDays)
27 return 1;
28 else
29 {
30 int aday = dtSel.Day + 7 - startWeekDays;
31 return aday / 7 + (aday % 7 > 0 ? 1 : 0);
32 }
33 }
34}
2{
3 //如果要判断的日期为1号,则肯定是第一周了
4 if (dtSel.Day == 1)
5 return 1;
6 else
7 {
8 //得到本月第一天
9 DateTime dtStart = new DateTime(dtSel.Year, dtSel.Month, 1);
10 //得到本月第一天是周几
11 int dayofweek = (int)dtStart.DayOfWeek;
12
13 //如果不是以周日开始,需要重新计算一下dayofweek,详细风DayOfWeek枚举的定义
14 if (!sundayStart)
15 {
16 dayofweek = dayofweek - 1;
17
18 if (dayofweek < 0)
19 dayofweek = 7;
20 }
21
22 //得到本月的第一周一共有几天
23 int startWeekDays = 7 - dayofweek;
24
25 //如果要判断的日期在第一周范围内,返回1
26 if (dtSel.Day <= startWeekDays)
27 return 1;
28 else
29 {
30 int aday = dtSel.Day + 7 - startWeekDays;
31 return aday / 7 + (aday % 7 > 0 ? 1 : 0);
32 }
33 }
34}
本文介绍了一个实用的方法来计算给定日期在其所在月份的第几周,通过简单的算法确定每周的起始日,并提供了完整的C#代码实现。
2566

被折叠的 条评论
为什么被折叠?



