我有4个日期startDate
,endDate
,periodStartDate
,periodEndDate
如果startDate
和endDate
表示的句点与periodStartDate
和periodEndDate
表示的句点重叠,我需要一种方法返回true。
这是C#3.5所以不能使用元组。喜欢建议的链接
我的大脑似乎没有工作,所以有人可以帮助我。
谢谢!
答案 0 :(得分:3)
if (startDate<periodStartDate)//start date is older
{
if (periodStartDate < endDate) //if end date is later than start of period
return true;
else return false; //
}
else //period start is older
{
if (periodEndDate < startDate) //period ended before startdate
return false;
else
return true;
}
只需关注你想要的地方“&lt;”,以及“&lt; =”
编辑(更优雅的解决方案):
if (end1<start2) || (end2<start1) return false
else return true;
答案 1 :(得分:1)
假设结束日期总是等于或晚于开始日期:
return startDate <= periodEndDate;
答案 2 :(得分:1)
您只需要检查endDate是否在periodStartDate之前,或者startDate是否在periodEndDate之后。
(假设startDate&lt; endDate和periodStartDate&lt; periodEndDate)
代码
if (endDate < periodStartDate || periodEndDate < startDate) return false;
else return true;
或在visual =)
startDate -------- endDate
periodStartDate -------- periodEndDate
periodStartDate -------- periodEndDate
startDate -------- endDate
答案 3 :(得分:1)
我认为这应该做你想要的。
{
if (startDate < periodStartDate)
{
if (endDate>=periodStartDate)
{
return true;
}
else
{
return false;
}
}
else
{
if (startDate <= periodEndDate)
{
return true;
}
else
{
return false;
}
}
}
即使一个范围完整包含另一个范围,也会捕获重叠。