各位大侠:我现在遇到一个计算时间段的问题,大概是这样的:
给出一个时间段,要计算这个时间段的有效时间。怎么样有效呢?要在08:00-12:00 和14:00-17:30这个时间段内才有效!比如07:00-13:10这个时间段的有效时间是4个小时。
现在请问大家有没有比较方便的方法计算出来啊?我问了几个人都说只能一种种情况判断,唉,那样的话要好多判断哦。
给出一个时间段,要计算这个时间段的有效时间。怎么样有效呢?要在08:00-12:00 和14:00-17:30这个时间段内才有效!比如07:00-13:10这个时间段的有效时间是4个小时。
现在请问大家有没有比较方便的方法计算出来啊?我问了几个人都说只能一种种情况判断,唉,那样的话要好多判断哦。
解决方案 »
- toolstrip上button的tooltiptext显示不到
- select (sum( )/count(*)
- 寻求C#开发的简单办公管理系统及其开发文档等相关内容!谢谢
- DataGridViewComboBoxCell如何隐藏下拉列表中的某个Item?
- 小弟在线急等!求教高手!一些简单的问题
- .net,ASPxGridView输入时,某列的输入框如何变大?
- C#写EXCEL遇到的问题
- 向各位大侠求助!
- 请问C#中有什么类型能接受对象方法返回的Variant数据类型?
- 用下拉选单如何实现数据绑定
- 【辞职了!】呵呵,深圳有需要帮忙的朋友吗??顺便散分……
- dataGrid:为什么分步骤转载两次不同的表,当时表的表头确在第二次查询是同时显示?
使用TimeSpan类?
{
//考虑时间是否有用:
//都早于八点,不考虑
if(DateTime.Compare(sdate,sdate.Date.AddHours(8))<0&&DateTime.Compare(edate,edate.Date.AddHours(8))<0)
{;}
//都晚于17.5 ,不考虑
else if(DateTime.Compare(sdate,sdate.Date.AddHours(17.5))>0&&DateTime.Compare(edate,edate.Date.AddHours(17.5))>0)
{;}
//晚于12 ,早于下午俩点,不考虑
else if(DateTime.Compare(sdate,sdate.Date.AddHours(12))>0&&DateTime.Compare(edate,edate.Date.AddHours(14))<0)
{;}
//结束时间早于开始时间不考虑
else if(DateTime.Compare(edate,sdate)<0)//结束时间小于开始时间。
{;}
else
{
if(DateTime.Compare(sdate,sdate.Date.AddHours(8))>0)
{
s=sdate;
}
else
s=sdate.Date.AddHours(8);
e=((DateTime.Compare(edate,edate.Date.AddHours(12))>0) ?edate.Date.AddHours(12):edate); ts=(DateTime.Compare(e,s)>0)?(TimeSpan)e.Subtract(s):new TimeSpan(0,0,0);//计算与上午工作时间交叉的部分
Response.Write(i+":小时"+ts.Hours+"--分钟"+ts.Minutes);
s=((DateTime.Compare(sdate,sdate.Date.AddHours(14))>0) ? sdate:sdate.Date.AddHours(14));
e=((DateTime.Compare(edate,edate.Date.AddHours(17.5))>0) ?edate.Date.AddHours(17.5):edate);
ts=(DateTime.Compare(e,s)>0)?(TimeSpan)e.Subtract(s):new TimeSpan(0,0,0);//计算与上午工作时间交叉的部分
Response.Write(" 小时"+ts.Hours+"--分钟"+ts.Minutes+"<br>");
}
}自己结贴了