一共54个小时,如何计算由任一天开始,一天按8小时计(8:00~12:00,13:30~17:30),一共需要多少天如果某一天按11个小时(8:00~12:00,13:30~17:30,6:30~9:30),又如何计算好难,分不够另开贴加

解决方案 »

  1.   

    54/8=6 54%8=6
    所以只需要计算从某时刻AddHours(6)的时刻再+6天即可.写的太罗唆,贴个小代码.
      

  2.   

    [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]只写了代码没调试.意思是这样的.