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 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作