33,008
社区成员
发帖
与我相关
我的任务
分享
static int workdaysCalculate(DateTime beginTime, DateTime endTime)
{
byte bt = (byte)(beginTime.DayOfWeek);
byte et = (byte)(endTime.DayOfWeek);
int spanDays = endTime.Subtract(beginTime).Days;
int workDays;
if (6 == bt)
{
if (6 == et)
{
workDays = spanDays * 5 / 7;
}
else if (0 == et)
{
workDays = (spanDays - 1) * 5 / 7;
}
else
{
workDays = (spanDays - et - 1) * 5 / 7 + et - 1;
}
}
else if (0 == bt)
{
if (0 == et)
{
workDays = (spanDays - et) * 5 / 7;
}
else
{
workDays = (spanDays - et) * 5 / 7 + et - 1;
}
}
else if (1 == bt)
{
if (0 == et)
{
workDays = (spanDays - 6) * 5 / 7 + 5;
}
else
{
workDays = (spanDays - et + 1) * 5 / 7 + et - 1;
}
}
else if (2 == bt)
{
if ((0 == et) || (1 == et))
{
workDays = (spanDays - 5 - et) * 5 / 7 + 4;
}
{
workDays = (spanDays - et + 2) * 5 / 7 + et - 2;
}
}
else if (3 == bt)
{
if (0 == et)
{
workDays = (spanDays - 4) * 5 / 7 + 3;
}
else if ((1== et)||(2==et))
{
workDays = (spanDays - et - 4) * 5 / 7 + et + 2;
}else
{
workDays = (spanDays - et + 3) * 5 / 7 + et - 3;
}
}
else if (4 == bt)
{
if (0 == et)
{
workDays = (spanDays - 3) * 5 / 7 + 2;
}
else if ((4 == et) || (5 == et) || (6 == et))
{
workDays = (spanDays - et + 4) * 5 / 7 + et - 4;
}
else
{
workDays = (spanDays - et - 3) * 5 / 7 + et + 1;
}
}
else
{
if (0 == et)
{
workDays = (spanDays - 2) * 5 / 7 + 1;
}
else if ((5 == et) || (6 == et))
{
workDays = (spanDays - et + 5) * 5 / 7 + et - 5;
}
else
{
workDays = (spanDays - et - 2) * 5 / 7 + et;
}
}
/*
switch (bt)
{
//When begin day is Saturday
case 6:
switch (et)
{
case 6:
workDays = spanDays * 5 / 7;
break;
case 0:
workDays = (spanDays - 1) * 5 / 7;
break;
case 1:
case 2:
case 3:
case 4:
case 5:
workDays = (spanDays-et-1) * 5 / 7 + et-1;
break;
}
break;
//When begin day is Sunday.
case 0:
switch (et)
{
case 0:
workDays = (spanDays - et) * 5 / 7;
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
workDays = (spanDays - et) * 5 / 7 + et - 1;
break;
}
break;
case 1:
switch (et)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
workDays = (spanDays - et + 1) * 5 / 7 + et - 1;
break;
case 0:
workDays = (spanDays-6) * 5 / 7 + 5;
break;
}
break;
case 2:
switch (et)
{
case 2:
case 3:
case 4:
case 5:
case 6:
workDays = (spanDays - et + 2) * 5 / 7 + et - 2;
break;
case 0:
case 1:
workDays = (spanDays - 5 - et) * 5 / 7 + 4;
break;
}
break;
case 3:
switch (et)
{
case 3:
case 4:
case 5:
case 6:
workDays = (spanDays - et + 3) * 5 / 7 + et - 3;
break;
case 0:
workDays = (spanDays - 4) * 5 / 7 + 3;
break;
case 1:
case 2:
workDays = (spanDays - et - 4) * 5 / 7 + et + 2;
break;
}
break;
case 4:
switch (et)
{
case 4:
case 5:
case 6:
workDays = (spanDays - et + 4) * 5 / 7 + et - 4;
break;
case 0:
workDays = (spanDays - 3) * 5 / 7 + 2;
break;
case 1:
case 2:
case 3:
workDays = (spanDays - et - 3) * 5 / 7 + et + 1;
break;
}
break;
case 5:
switch (et)
{
case 5:
case 6:
workDays = (spanDays - et + 5) * 5 / 7 + et - 5;
break;
case 0:
workDays = (spanDays - 2) * 5 / 7 + 1;
break;
case 1:
case 2:
case 3:
case 4:
workDays = (spanDays - et - 2) * 5 / 7 + et;
break;
}
break;
}
*/
return workDays;
}