有两种计算方法的,一个就是对这个月计算,一号开始计算是第一周的第一天
另一种计算方法,就是和windows的“日期时间属性”里面的那个日期一样,一号是第一周,就是不一定是第一天,他是星期几,他就是第几天
下面的是对第二种计算方法的计算,如果要取第一种计算方法,设置firstDayInWeek=0就可以了
调用
DateTime dt;
int w = 0, firstDayInWeek; //firstDayInWeek记录1号是星期几
dt = Calendar1.SelectedDate;
hfMTime.Value = dt.ToString("yyyy-MM-dd");
//取这个月第一天是一个星期里的第几天
firstDayInWeek = getFirstDayInWeek(Convert.ToDateTime(dt.ToString("yyyy-MM") + "-01"));
//取当前日期是当月第几周
w = getWeekIndex(dt, firstDayInWeek);
用了两个自定义方法
private int getFirstDayInWeek(DateTime dt)
{
int firstDayInWeek = 0;
switch (dt.DayOfWeek.ToString())
{
case "Sunday":
firstDayInWeek = 0;
break;
case "Monday":
firstDayInWeek = 1;
break;
case "Tuesday":
firstDayInWeek = 2;
break;
case "Wednesday":
firstDayInWeek = 3;
break;
case "Thursday":
firstDayInWeek = 4;
break;
case "Friday":
firstDayInWeek = 5;
break;
case "Saturday":
firstDayInWeek = 6;
break;
}
return firstDayInWeek;
}
private int getWeekIndex(DateTime dt, int firstDayInWeek)
{
/*
http://www.tiantiansoft.com/bbs/dispbbs.asp?boardID=40&ID=152279 */
//取dt是这个月的第几周
int i=0,m;
m=dt.Month;
if (dt.AddDays(-7 + firstDayInWeek).Month < m)
{
i = 1;
}
else if (dt.AddDays(-14 + firstDayInWeek).Month < m)
{
i = 2;
}
else if (dt.AddDays(-21 + firstDayInWeek).Month < m)
{
i = 3;
}
else if (dt.AddDays(-28 + firstDayInWeek).Month < m)
{
i = 4;
}
else
{
i = 5;
}
return i;
}