我有一個對象,包括日期範圍算法找到並修復日期區域相交
public class MyObject
{
public int Id {get; set;}
public string Name {get; set;}
public DateTime StartDate {get; set;}
public DateTime EndDate {get; set;}
}
我希望能夠在爲MyObject的一個實例傳遞和檢查,以確保已經相交的所有其他對象日期,如
var myObj = new MyObject
{
Id = 1,
Name = "Test",
StartDate = new Date(2017, 3,1),
EndDate = new Date(2017, 3,10)
};
foreach(var objInList in objList)
{
bool done = false;
//if both dates are inside rnage
if (objInList.StartDate <= myObj.StartDate && myObj.StartDate <= objInList.EndDate
&& objInList.StartDate<= myObj.EndDate && myObj.EndDate<= objInList.EndDate)
{// update start and end
done = true;
}
// if start of new item is in range, but end isnt
else if (objInList.StartDate<= myObj.StartDate && myObj.StartDate <= objInList.EndDate)
{
if (!done)
{
done = true;
}
}
// if both dates are inside range
else if (objInList.StartDate<= myObj.EndDate && myObj.EndDate <= objInList.EndDate)
{
if (!done)
{ }
}
}
基本上我需要更新objInList以確保在循環後沒有日期相交。我很難將邏輯放在合適的位置,而不會變得過於複雜。
這裏有什麼'Date'類型?這是你自己的類型嗎?如果你提供了一個[mcve]的正確縮進代碼和樣本輸入/預期輸出,那真的會有所幫助 - 我發現很難理解你想在這裏實現什麼。 –
對不起.Net DateTime。我更新了這個例子。我期待檢查myObj的日期是否與objList中的任何日期範圍相交。那有意義嗎? –
那麼好,但它不像「日期範圍」那麼「日期」。我建議您可能想要做的第一件事是創建一個'DateRange'類型,您可以放置大部分邏輯。 (你所顯示的格式不正確的代碼只會設置「完成」 - 這不會做任何其他事情。)再一次,[mcve]會更有用。 –