1
我正在制定一個預訂系統,用戶可以在其中進行預約。 我需要做的是確保會議不會衝突時間明智。衝突預訂比較使用CompareTo的日期時間
例如: 會議1是從13:00到14:00。會議2從13:30到14:30。
這些會議發生衝突,因此不應進行預訂。
現在,當我嘗試這樣做,我沒有得到期望的結果,有時它認爲預訂不應該讓當它真的應該,反之亦然。
這裏是我的代碼:
if (OldBookingDate.Equals(NewBookingDate))
{
// Check if (OldBookingTime -> OldEndTime) clashes with (NewBookingTime -> NewEndTime)
// For Example (10:00 -> 12:00), (09:00 -> 11:00)
// So this Clashes!
DateTime OldBookingTime_End = OldBookingTime_Start.AddHours(OldDurationInt);
DateTime NewBookingTime_End = NewBookingTime_Start.AddHours(NewDurationInt);
int Clash1 = OldBookingTime_Start.CompareTo(NewBookingTime_Start);
int Clash2 = OldBookingTime_End.CompareTo(NewBookingTime_End);
if ((Clash1 < 0) || (Clash2 > 0))
{
// If Clash1 -> Finishes before Meeting
// If Clash2 -> Finishes after Meeting
Available = true;
}
if ((Clash1 == 0) || (Clash2 == 0))
{
// Start and end is the same
Available = false;
}
if ((Clash1 > 0) || (Clash2 < 0))
{
// Intersects/Clashes with already booked meeting
Available = false;
}
}
主要問題似乎是與((Clash1 > 0) || (Clash2 < 0))
if語句作爲當預訂應在第一(如果可用),以真實的陳述集(因爲它應該),但是這if語句然後將其設置爲false。
我如何可以執行這些檢查正常,確保時間不會衝突?
將這項工作,而不是具有衆多的if語句? – Mac 2012-02-19 14:30:26
是的,也刪除第一個'如果(OldBookingDate.Equals(NewBookingDate))'檢查。 – 2012-02-19 14:33:22
非常感謝,很好。 – Mac 2012-02-19 15:49:37