Group A
Start date: 1/1/2017
End date: 1/31/2017
Group B
Start date: 1/29/2017
End date: 2/4/2017
è¦æŸ¥æ‰¾æ—¥æœŸèŒƒå›´ï¼ˆB组日期是å¦åœ¨A组日期范围内)é‡å 与å¦ï¼Œæˆ‘å¯ä»¥ä½¿ç”¨æ¤ï¼š
If (GroupA.StartDate<= GroupB.EndDate && GroupB.StartDate<= GroupA.EndDate)
{
//Date in range - overlaps.
}
我如何获得ä¸é‡å 但ä¸å±žäºŽè¯¥èŒƒå›´çš„日期列表?
在上é¢çš„例åä¸ï¼Œæˆ‘希望有效地回æ¥
1/29 - Yes
1/30 - Yes
1/31- Yes
2/1 - No
2/2 - No
2/3- No
2/4- No
æå‰è‡´è°¢ã€‚
ç”案 0 :(得分:1)
è¿™æ ·å¯è¡Œã€‚
第1æ¥ï¼šåˆ›å»ºä¸€ä¸ªåŒ…å«æ‰€éœ€å±žæ€§çš„类。
public class MyDate
{
public DateTime Date { get; set; }
public bool IsValid { get; set; }
}
第2æ¥ï¼š
public List<MyDate> CheckDates(DateTime groupAStart, DateTime groupAEnd,
DateTime groupBStart, DateTime groupBEnd)
{
List<MyDate> myDates=new List<MyDate>();
for (DateTime date = groupAStart; date <= groupAEnd; date = date.AddDays(1))
{
MyDate myDate = new MyDate();
if (date > groupBEnd || groupBStart > date)
{
myDate.Date = date;
myDate.IsValid = false;
}
if(myDate.Date> DateTime.MinValue)
myDates.Add(myDate);
}
return myDates;
}
测试它:
DateTime groupAStart = Convert.ToDateTime("1/29/2017");
DateTime groupAEnd = Convert.ToDateTime("2/5/2017");
DateTime groupBStart = Convert.ToDateTime("1/1/2017");
DateTime groupBEnd= Convert.ToDateTime("1/31/2017");
var results = CheckDates( groupAStart , groupAEnd , groupBStart , groupBEnd);