冲突预订使用CompareTo比较日期时间

本文关键字:比较 日期 时间 CompareTo 冲突 | 更新日期: 2023-09-27 18:25:02

我正在制作一个预订系统,用户可以在该系统中相互预约。我需要做的是确保会议不会在时间上发生冲突。

例如:会议1时间为13:00至14:00。第二次会议时间为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语句设置为true(应该如此),但随后这个if语句将其设置为false。

如何正确执行这些检查以确保时间不冲突?

冲突预订使用CompareTo比较日期时间

试试这个:

bool clashing = (OldBookingTime_Start <= NewBookingTime_End)
             && (NewBookingTime_Start >= OldBookTime_End);
Available = !clashing;

另请参阅:

确定两个日期范围是否重叠