日期:2014-05-19  浏览次数:20819 次

一个月内有几个周一,大家集思广益
一个月内有几个周一,大家给个思路

------解决方案--------------------
DateTime.DayOfWeek来遍历不就OK了!
------解决方案--------------------
一个月是28到31天,所以至少是4个星期一,然后就看要不要加一个了。

(当月总天数-4*7)=n ,就要看这里面有没有星期一了,做个循环从当月最后一天往前推n天,看看有没有星期一就可以。

------解决方案--------------------
/// <summary>
/// 统计一段时间内有多少个星期几
/// </summary>
/// <param name= "AStart "> 开始日期 </param>
/// <param name= "AEnd "> 结束日期 </param>
/// <param name= "AWeek "> 星期几 </param>
/// <returns> 返回个数 </returns>
public int TotalWeeks(DateTime AStart, DateTime AEnd, DayOfWeek AWeek)
{
TimeSpan vTimeSpan = new TimeSpan(AEnd.Ticks - AStart.Ticks);
int Result = (int)vTimeSpan.TotalDays / 7;
for (int i = 0; i <= vTimeSpan.TotalDays % 7; i++)
if (AStart.AddDays(i).DayOfWeek == AWeek)
return Result + 1;
return Result;
} /* TotalWeeks */

private void button1_Click(object sender, EventArgs e)
{
Console.WriteLine(TotalWeeks(new DateTime(2007, 06, 01),
new DateTime(2007, 06, 30), DayOfWeek.Monday));
}