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

怎么计算两个日期之间的相隔多少天,并且出去中间的周六和周日。
怎么计算两个日期之间的相隔多少天,并且出去中间的周六和周日。

------解决方案--------------------
//不一定对,楼主多测试验证一下

public int TotalWorkday(DateTime AStart, DateTime AEnd)
{
TimeSpan vTimeSpan = new TimeSpan(AEnd.Ticks - AStart.Ticks);
// 跨度多少个星期,每个星期5个工作日
int Result = ((int)vTimeSpan.TotalDays / 7) * 5;

// 计算余下的日期中的工作日
for (int i = 0; i <= vTimeSpan.TotalDays % 7; i++)
switch (AStart.AddDays(i).DayOfWeek)
{
case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
break;
default:
Result++;
break;
}
return Result;
} /* TotalWorkday */

private void button1_Click(object sender, EventArgs e)
{
Text = TotalWorkday(new DateTime(2007, 4, 6),
new DateTime(2007, 4, 11)).ToString();
}

------解决方案--------------------
从开始的下一个周一算到结束的上一个周日
这个是整数

然后再算开始到下一个周五的时间 + 结束上一个周一到结束的时间

有个特殊情况就是开始结束不满足一个礼拜

另外节假日怎么办??

------解决方案--------------------
相差天数/7 就是多少周
多少周 * 2 = 休息日

工作日 = 相差天数 - 休息日

但是遇到节假日怎么办?
------解决方案--------------------
情况考虑少了哈,就是上周5到这周2这样的没有考虑
------解决方案--------------------
就是不到7天的就要算周几了
------解决方案--------------------
一楼的差不多,不过还不如全部判断保险!
DateTime tDate;
TotalDays=datediff(day,AStart,AEnd);
for (int i = 0; i < TotalDays; i++)
tDate=dateadd(day,i,AStart)
switch (tDate.DayOfWeek)
{
case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
break;
default:
Result++;
break;
}
return Result;