怎么计算两个日期之间的相隔多少天,并且出去中间的周六和周日。
怎么计算两个日期之间的相隔多少天,并且出去中间的周六和周日。
------解决方案--------------------//不一定对,楼主多测试验证一下
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;