难题:一共54个小时,如何计算由任一天开始,一天(计8点到12点,1点半到5点半,共8小时),一共需要多少天 一共54个小时,如何计算由任一天开始,一天按8小时计(8:00~12:00,13:30~17:30),一共需要多少天如果某一天按11个小时(8:00~12:00,13:30~17:30,6:30~9:30),又如何计算好难,分不够另开贴加 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 54/8=6 54%8=6所以只需要计算从某时刻AddHours(6)的时刻再+6天即可.写的太罗唆,贴个小代码. [code=C#] private DateTime endtime(DateTime starttime) { //任一天开始,一天按8小时计(8:00~12:00,13:30~17:30) DateTime dt = starttime.Date.AddHours(12); if (starttime.CompareTo(starttime.Date.AddHours(8)) < 0) return starttime.AddDays(6).Date.AddHours(15.5); //早晨8点前,都按8点算,返回6天后的15:30 if (starttime.CompareTo(starttime.Date.AddHours(12)) <= 0) //8-12点之间 { dt = starttime.AddHours(7.5); // +7.5个小时(6小时+1.5小时空余 if (dt.CompareTo(starttime.AddDays(6).Date.AddHours(17.5)) > 0) //如果+6小时超过17:30 就再加14.5个小时 17:30-8:00 return dt.AddDays(6).AddHours(14.5); // else return dt.AddDays(6); //否则就+6天 } if (starttime.CompareTo(starttime.Date.AddHours(13.5)) < 0) //12-13:30之间都算13:30开始. return starttime.AddDays(7).Date.AddHours(10); if (starttime.CompareTo(starttime.Date.AddHours(17.5)) <= 0) //13:30-17:30之间返回 6+14.5个小时 return starttime.AddDays(7).AddHours(20.5); return starttime.AddDays(7).Date.AddHours(15.5); //17:30之后按第二天8点开始. }[code]只写了代码没调试.意思是这样的. C#实现按钮美化 小白请教:StringBuilder 杀毒软件的定时扫描病毒是怎么设计的?代码? 垃圾回收 Winform中的Datagridview的第1,2,3,4列为Checkbox,如何根据第1列的值改变第2,3,4例的值? xmlelement类和xmlnode类之间到底有什么区别?? 为什么我创建的虚拟目录变成了IIsWebDirectory类型? C#中如何打印一页纸 我不太会用HttpCookie 怎样得到c#程序中某类的实例化对象的个数? 关于生成Code 128码,大家帮看看,错在什么地方。 关于二维数组的问题!新手,积分不够请不要见怪!
所以只需要计算从某时刻AddHours(6)的时刻再+6天即可.写的太罗唆,贴个小代码.
private DateTime endtime(DateTime starttime)
{
//任一天开始,一天按8小时计(8:00~12:00,13:30~17:30) DateTime dt = starttime.Date.AddHours(12);
if (starttime.CompareTo(starttime.Date.AddHours(8)) < 0)
return starttime.AddDays(6).Date.AddHours(15.5); //早晨8点前,都按8点算,返回6天后的15:30
if (starttime.CompareTo(starttime.Date.AddHours(12)) <= 0) //8-12点之间
{
dt = starttime.AddHours(7.5); // +7.5个小时(6小时+1.5小时空余
if (dt.CompareTo(starttime.AddDays(6).Date.AddHours(17.5)) > 0) //如果+6小时超过17:30 就再加14.5个小时 17:30-8:00
return dt.AddDays(6).AddHours(14.5); //
else
return dt.AddDays(6); //否则就+6天
}
if (starttime.CompareTo(starttime.Date.AddHours(13.5)) < 0) //12-13:30之间都算13:30开始.
return starttime.AddDays(7).Date.AddHours(10);
if (starttime.CompareTo(starttime.Date.AddHours(17.5)) <= 0) //13:30-17:30之间返回 6+14.5个小时
return starttime.AddDays(7).AddHours(20.5);
return starttime.AddDays(7).Date.AddHours(15.5); //17:30之后按第二天8点开始. }
[code]只写了代码没调试.意思是这样的.