吃完饭写完了顺手贴上来 DateTime dt1 = Convert.ToDateTime(StartTime); DateTime dt2 = Convert.ToDateTime(EndTime); TimeSpan ts = dt2 - dt1; int a = ts.Days; int b = (a/7)*2; int c = DayOfWeek(dt1)+a%7; if(c>=6) b += 1; if(c=7) b += 2; //e为去掉周六周日的天数 int e = a - b; //取得当前星期几然后转换成数字 private int DayOfWeek(DateTime dt) { int i = 0; string dow = dt.DayOfWeek.ToString(); switch(dow) { case "Monday": i = 1; break; case "Tuesday": i = 2; break; case "Wednesday": i = 3; break; case "Thursday": i = 4; break; case "Friday": i = 5; break; case "Saturday": i = 6; break; case "Sunday": i = 7; break; } return i; }
(ime.days/7)*2 这是绝对周六日数量
加上
当前是星期几(对应1、2、3)+ime.days/7余数 ,如果大于等于6则加1,大于等于7加2
就正好是是周六日的数目了。
想到就文字描述了,没写成代码^_^
DateTime dt1 = Convert.ToDateTime(StartTime);
DateTime dt2 = Convert.ToDateTime(EndTime);
TimeSpan ts = dt2 - dt1;
int a = ts.Days;
int b = (a/7)*2;
int c = DayOfWeek(dt1)+a%7;
if(c>=6)
b += 1;
if(c=7)
b += 2;
//e为去掉周六周日的天数
int e = a - b; //取得当前星期几然后转换成数字
private int DayOfWeek(DateTime dt)
{
int i = 0;
string dow = dt.DayOfWeek.ToString();
switch(dow)
{
case "Monday":
i = 1;
break;
case "Tuesday":
i = 2;
break;
case "Wednesday":
i = 3;
break;
case "Thursday":
i = 4;
break;
case "Friday":
i = 5;
break;
case "Saturday":
i = 6;
break;
case "Sunday":
i = 7;
break;
}
return i;
}
DateTime beginDate,
DateTime endDate)
{
TimeSpan interval = endDate - beginDate;
int totalDayCounts = interval.Days + 1; double totalWeekCounts = Math.Floor(totalDayCounts / 7);
double remainder = Math.Abs(Math.IEEERemainder(Convert.ToDouble(totalDayCounts),7));
double offDayCount = totalWeekCounts * 2; int beginDateDayOfWeek = beginDate.DayOfWeek.GetHashCode();
int endDateDayOfWeek = endDate.DayOfWeek.GetHashCode();
if(remainder == 1)
{
if(beginDateDayOfWeek == 0 || beginDateDayOfWeek == 6)
{
offDayCount ++;
}
}
if(remainder > 1)
{
if(beginDateDayOfWeek == 0 || endDateDayOfWeek == 6)
{
offDayCount ++;
}
else
{
offDayCount += 2;
}
}
return offDayCount;
}
(d2-d1)/7,整星期数
其中包含的星期六,星期日天数d = (d2-d1)/7*2;
(d2-d1)%7,不足一星期的天树
if (d1的星期数+d2-d1)%7>7)
{
d+=2
}
else
{
if (d1的星期数+d2-d1)%7>6 )
{
d+=1;
time = d2-d1 -d;}
}
if(c>=6)
b += 1;
if(c=7)
b += 2;
//e为去掉周六周日的天数C=7时,加了3天
days = (d2 - d1).days; //总天数
ws = days / 7 //整周数
d = ws * 2;
ls = days % 7 //剩下的天数
if (ls > 0)
{
if ((int)d2.dayofweek == 6) d++; //剩下天数最后一天是周六,假日加一
if ((int)d2.addday(-ls).dayofweek == 0) d++; //剩下天数第一天是周日,假日加一
}
DateTime dtStartTime = Convert.ToDateTime(StartTime);
DateTime dtEndTime = Convert.ToDateTime(EndTime);
TimeSpan tsSumday = dtEndTime - dtStartTime;
int iSumday = tsSumday.Days;
int iSumweekend = iSumday/7*2;
int iEndTime = ChangeDayOfWeek(dtEndTime);//此处调用转换日期变成数字的函数在上面
int iStartTime = ChangeDayOfWeek(dtStartTime);//此处调用转换日期变成数字的函数在上面
if((iEndTime == 7 )&&( iSumday%7 != 0)&&(iStartTime != 7 ))
{
iSumweekend += 1;
}
if((iEndTime < iStartTime)&&( iSumday%7 != 0))
{
if(iStartTime == 7)
{
iSumweekend += 1;
}
else
{
iSumweekend += 2;
}
}
int iSumWorkingDay = iSumday - iSumweekend;