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();
}
{
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算法假设星期一到星期日分别标识为1-7
凑够7天-2天为一个周期
假设开始日期跟结束日期相差为7的整数 Days, 那么之间的间隔时间就为 Days - (2*Days/7)有点复杂的就是怎么去凑一个周期,是开始日期去凑还是结束日期去凑
或者直接点判断当前日期是周几,然后开始日期向前凑到周几再减去间隔工作日具体到时间的话,不知道能不能直接用时间判断是否满24小时来加减一天如有错误请指正
{
int Result = 0;
DateTime dt = AStart;
while (dt != AEnd)
{
switch (dt.DayOfWeek)
{
case DayOfWeek.Monday:
case DayOfWeek.Tuesday:
case DayOfWeek.Wednesday:
case DayOfWeek.Thursday:
case DayOfWeek.Friday:
Result++;
break;
}
dt = dt.AddDays(1);
}
return Result;
}