一、以周日为一周的第一天
/// <summary>
/// 根据日期计算日期周数(以周日为一周的第一天)
/// </summary>
/// <param name="date">日期</param>
/// <returns>日期周数</returns>
private int WeekOfYear(DateTime date)
{
DayOfWeek dw = (Convert.ToDateTime(string.Format("{0}-1-1 0:0:0", date.Year.ToString()))).DayOfWeek;
int day = 0;
switch (dw)
{
case DayOfWeek.Sunday:
{
day = -1;
break;
}
case DayOfWeek.Monday:
{
day = 0;
break;
}
case DayOfWeek.Tuesday:
{
day = 1;
break;
}
case DayOfWeek.Wednesday:
{
day = 2;
break;
}
case DayOfWeek.Thursday:
{
day = 3;
break;
}
case DayOfWeek.Friday:
{
day = 4;
break;
}
case DayOfWeek.Saturday:
{
day = 5;
break;
}
}
int week = (date.DayOfYear + day) / 7 + 1;
return week;
}
则调用方法WeekOfYear就可以得到以周日为一周第一天的日期周数了
二、以周一为一周的第一天
/// <summary>
/// 根据日期计算日期周数(以周一为一周的第一天)
/// </summary>
/// <param name="date">日期</param>
/// <returns>日期周数</returns>
private int WeekOfYear2(DateTime date)
{
DayOfWeek dw = (Convert.ToDateTime(string.Format("{0}-1-1 0:0:0", date.Year.ToString()))).DayOfWeek;
int day = 0;
switch (dw)
{
case DayOfWeek.Monday:
{
day = -1;
break;
}
case DayOfWeek.Tuesday:
{
day = 0;
break;
}
case DayOfWeek.Wednesday:
{
day = 1;
break;
}
case DayOfWeek.Thursday:
{
day = 2;
break;
}
case DayOfWeek.Friday:
{
day = 3;
break;
}
case DayOfWeek.Saturday:
{
day = 4;
break;
}
case DayOfWeek.Sunday:
{
day = 5;
break;
}
}
int week = (date.DayOfYear + day) / 7 + 1;
return week;
}
则调用方法WeekOfYear2就可以计算以周一为一周第一天的日期周数了。