1
public
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 }