qq_35509878 2016-09-12 09:21 采纳率: 0%
浏览 1465

求时间段内的工作日,排除双休及法定节假日,下例能排除双休,但无法排除法定节假日,该如何排除国庆节

protected void Page_Load(object sender, EventArgs e)
{
DataSet ds= new ItemQueryDataDP().GetITEMCODEByid("12");
string q=ds.Tables[0].Rows[0][0].ToString();
DateTime datet = Convert.ToDateTime("2016/9/30 12:23:23");
DateTime datet2 = Convert.ToDateTime("2016/10/30 12:23:23");
TimeSpan span = datet2.Subtract(datet);
int dayDiff = span.Days + 1;
int totleWeek = dayDiff / 7;
int yuDay = dayDiff % 7;
int lastDay = 0;
if (yuDay == 0) //正好整个周
{
lastDay = dayDiff - (totleWeek * 2);
}
else
{
int weekDay = 0;
int endWeekDay = 0; //多余的天数有几天是周六或者周日
switch (datet.DayOfWeek)
{
case DayOfWeek.Monday:
weekDay = 1;
break;
case DayOfWeek.Tuesday:
weekDay = 2;
break;
case DayOfWeek.Wednesday:
weekDay = 3;
break;
case DayOfWeek.Thursday:
weekDay = 4;
break;
case DayOfWeek.Friday:
weekDay = 5;
break;
case DayOfWeek.Saturday:
weekDay = 6;
break;
case DayOfWeek.Sunday:
weekDay = 7;
break;
}
if ((weekDay == 6 && yuDay >= 2) || (weekDay == 7 && yuDay >= 1) || (weekDay == 5 && yuDay >= 3) || (weekDay == 4 && yuDay >= 4) || (weekDay == 3 && yuDay >= 5) || (weekDay == 2 && yuDay >= 6) || (weekDay == 1 && yuDay >= 7))
{
endWeekDay = 2;
}
if ((weekDay == 6 && yuDay < 1) || (weekDay == 7 && yuDay < 5) || (weekDay == 5 && yuDay < 2) || (weekDay == 4 && yuDay < 3) || (weekDay == 3 && yuDay < 4) || (weekDay == 2 && yuDay < 5) || (weekDay == 1 && yuDay < 6))
{
endWeekDay = 1;
}
lastDay = dayDiff - (totleWeek * 2) - endWeekDay;
}
lblTime.Text = lastDay.ToString();
}

  • 写回答

2条回答

  • simonezhlx 2016-09-13 01:52
    关注

    特殊节假日有时还会调整,而且是没有规律的。这些节日可以放到一个可配置的地方,作为黑名单使用即可。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog