问题描述
有两个时间段时间段a:为1.8-6.8日每个月的节点为每月8号时间段b:为2.3-5.28日问时间段b占用时间段a第一月多少天几个满月最后一月多少天
解决方案
解决方案二:
问题没说清楚啊。==========时间段a:为1.8-6.8日每个月的节点为每月8号时间段b:为2.3-5.28日问时间段b占用时间段a第一月多少天几个满月最后一月多少天=======b占有时间段a第一月多少天?0天。几个满月?三月,四月。两满月。呵呵,楼主是问这个吗?
解决方案三:
staticvoidDateRangeCheck(DateTimedt1Start,DateTimedt1End,DateTimedt2Start,DateTimedt2End){vardtStart=newDateTime[]{dt1Start,dt2Start}.Max();vardtEnd=newDateTime[]{dt1End,dt2End}.Min();Console.WriteLine("时间2占用时间1天数:"+((dtEnd-dtStart).TotalDays+1));Console.WriteLine("占用最后一个月天数:"+dtEnd.Day);}
DateRangeCheck(newDateTime(2015,1,8),newDateTime(2015,6,8),newDateTime(2015,2,3),newDateTime(2015,5,28));
解决方案四:
引用1楼fanchka的回复:
问题没说清楚啊。==========时间段a:为1.8-6.8日每个月的节点为每月8号时间段b:为2.3-5.28日问时间段b占用时间段a第一月多少天几个满月最后一月多少天=======b占有时间段a第一月多少天?0天。几个满月?三月,四月。两满月。呵呵,楼主是问这个吗?
时间a是一个时间区间每月8号为每月的结束天问时间b占用了时间a几个满月(8号到下月7号为一个满月)最后一期为多少天
解决方案五:
引用2楼starfd的回复:
staticvoidDateRangeCheck(DateTimedt1Start,DateTimedt1End,DateTimedt2Start,DateTimedt2End){vardtStart=newDateTime[]{dt1Start,dt2Start}.Max();vardtEnd=newDateTime[]{dt1End,dt2End}.Min();Console.WriteLine("时间2占用时间1天数:"+((dtEnd-dtStart).TotalDays+1));Console.WriteLine("占用最后一个月天数:"+dtEnd.Day);}DateRangeCheck(newDateTime(2015,1,8),newDateTime(2015,6,8),newDateTime(2015,2,3),newDateTime(2015,5,28));
时间a是一个时间区间每月8号为每月的结束天问时间b占用了时间a几个满月(8号到下月7号为一个满月)最后一期为多少天
解决方案六:
staticvoidDateRangeCheck(DateTimedt1Start,DateTimedt1End,DateTimedt2Start,DateTimedt2End){vardtStart=newDateTime[]{dt1Start,dt2Start}.Max();vardtEnd=newDateTime[]{dt1End,dt2End}.Min();vartmpDate=newDateTime(dtStart.Year,dtStart.Month,1);varnextDate=tmpDate.AddMonths(1);Console.WriteLine("占用第一个月天数:"+((nextDate-tmpDate).Days-dtStart.Day));if(dtStart.Day==1){nextDate=dtStart;}varmonth=0;while(nextDate.AddMonths(month+1)<dtEnd){month++;}Console.WriteLine("占用满月数:"+month);Console.WriteLine("占用最后一个月天数:"+dtEnd.Day);}
解决方案七:
8号为结束日的话,那将日期部分的1改为8就可以了
解决方案八:
是这样啊。根据楼主的意图,我们假设:时间段a,包含时间段b。如此,我们可以这么做:voidDump(DateTimea_begin,DateTimea_end,DateTimeb_begin,DateTimeb_end){Consol.WriteLine("b占a的第一个月:{0}天。",b_bein.Day-8);Consol.WriteLine("b占a的最后一个月:{0}天。",b_end.Day-8);DateTimebegin=(b_begin.Day>8)?b_begin.AddDays(-b_begin.Day).AddMonths(1):b_begin.AddDays(-b_begin.Day);DateTimeend=(b_end.Day>8)?b_end.AddDays(b_end.Day):b_end.AddDays(-b_begin.Day).AddMonths(-1);Consol.WriteLine("b占a的{0}个满月。",((end.Year-begin.Year)*12+end.Month-begin.Month));}
解决方案九:
-8小于0,则把差值加一个月。(补充一下)