感謝所有@ c0d3b34n和@ThomasVoß,
而且這篇文章https://stackoverflow.com/a/325964/3970128
這是我所做的一切
好吧,首先創建一個類TimePeriod像這樣:
public class TimePeriod { public int Id; public DateTime FromDate { get;組; }
public DateTime ToDate
{
get; set;
}
public static DateTime Parse(string date)
{
var dt = DateTime.Parse(date,
CultureInfo.CreateSpecificCulture("en-US"), DateTimeStyles.RoundtripKind);
return dt;
}
} 然後創建了這個類的項目的列表:
List<TimePeriod> list = new List<TimePeriod>();
然後添加你的日期的例子(加入所有的人,你只需要添加選定一個人的):
list.Add(new TimePeriod() { Id = 1, FromDate = TimePeriod.Parse("7/20/2016"), ToDate = TimePeriod.Parse("7/27/2016") });
list.Add(new TimePeriod() { Id = 2, FromDate = TimePeriod.Parse("6/18/2016"), ToDate = TimePeriod.Parse("7/25/2016") });
list.Add(new TimePeriod() { Id = 3, FromDate = TimePeriod.Parse("7/20/2016"), ToDate = TimePeriod.Parse("7/27/2016") });
list.Add(new TimePeriod() { Id = 4, FromDate = TimePeriod.Parse("6/5/2016"), ToDate = TimePeriod.Parse("6/10/2016") });
然後
foreach (var variable in list)
{
foreach (var VARIABLE in list)
{
if (variable.Id == VARIABLE.Id)
{
continue;
}
if ((variable.FromDate <= VARIABLE.ToDate) && (variable.ToDate >= VARIABLE.FromDate))
{
Console.WriteLine("Problem Hapendes!! {0} <= {1} , {2} >= {3}", variable.FromDate.ToString(), VARIABLE.ToDate.ToString(), VARIABLE.ToDate.ToString(), VARIABLE.FromDate.ToString());
}
}
}
「含有干擾」是什麼意思?這裏有什麼「干擾」?目前你的問題還不是很清楚。你的意思是你想找到哪些間隔重疊?它看起來像用戶沒有選擇*日期*,但*日期範圍*在這裏...它看起來像我的前三個所有相互重疊... –
我假設干擾意味着開始日期和結束日期兩選定的課程相互重疊。 – eds
[確定是否兩個日期範圍重疊]可能的重複(http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap) –