C#判断一个日期是一个月里面的第几个星期

DateTime里只有DayOfWeek这个属性,不能直接得到当天是当月的第几周。所以写了个函数,来计算一个日期是当月的第几个星期,代码有详细的注释,就不多说了

 

参数说明:dtSel:要判断的日期,sundayStart:一周的第一天是否为周日



public static int WeekOfMonth(DateTime dtSel,bool sundayStart)

 {

     //如果要判断的日期为1号,则肯定是第一周了

     if (dtSel.Day == 1)

         return 1;

     else

     {

         //得到本月第一天

         DateTime dtStart = new DateTime(dtSel.Year, dtSel.Month, 1);

        //得到本月第一天是周几

        int dayofweek = (int)dtStart.DayOfWeek;

 

        //如果不是以周日开始,需要重新计算一下dayofweek,详细风DayOfWeek枚举的定义

        if (!sundayStart)

        {

            dayofweek = dayofweek - 1;

 

            if (dayofweek < 0)

                dayofweek = 7;

        }

 

        //得到本月的第一周一共有几天

        int startWeekDays = 7 - dayofweek;

 

       //如果要判断的日期在第一周范围内,返回1

        if (dtSel.Day <= startWeekDays)

            return 1;

        else

        {

            int aday = dtSel.Day + 7 - startWeekDays;

            return aday / 7 + (aday % 7 > 0 ? 1 : 0);

        }

    }

}

posted on 2008-06-04 11:04  西湖浪子  阅读(882)  评论(0)    收藏  举报