110,533
社区成员
发帖
与我相关
我的任务
分享
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;
}
static int workdaysCalculate(DateTime beginTime, DateTime endTime)
{
var days = endTime.Date.Subtract(beginTime.Date).TotalDays;
int wt = (int)beginTime.DayOfWeek;
var result = 0;
for (var i = 0; i < days; ++i, ++wt)
{
if (wt == 7)
wt = 0;
if (wt > 0 && wt < 6)
result++;
}
return result;
}
static int workdaysCalculate(DateTime beginTime, DateTime endTime)
{
int bt = (int)(beginTime.DayOfWeek);
int et = (int)(endTime.DayOfWeek);
int spanDays = endTime.Subtract(beginTime).Days + 1;
return spanDays - ((spanDays + bt) / 7 * 2) + (et == 6 ? 1 : 0);
}
public void SayHello()
{
Console.WriteLine("Hi~~~~,你好啊。");
}
/// <summary>
/// 计算两个日期的工作日总数(包括起始日期当天和结束日期当天)
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
/// <returns></returns>
private static int GetNumberOfWorkDays(DateTime start, DateTime end)
{
int days = 0;
while (start <= end)
{
if (start.DayOfWeek != DayOfWeek.Saturday && start.DayOfWeek != DayOfWeek.Sunday)
{
++days;
}
start = start.AddDays(1);
}
return days;
}
但是如果含有法定节假日不在周六周日的就得另写一个库存储这些日期,并且方法中要将这些日期排出