检查日期时间落在两个日期之间

本文关键字:日期 之间 两个 时间 检查 | 更新日期: 2023-09-27 18:15:53

我必须检查这两个日期之间的日期时间。我有两个旧日期和两个新日期,基本上需要检查它们是否匹配。

DateTime old_start_Dt = Convert.ToDateTime("07/28/2014 3:30:00 AM");
DateTime old_end_Dt = Convert.ToDateTime("07/28/2014 4:00:00 AM");
DateTime new_start_Dt = Convert.ToDateTime("07/28/2014 3:45:00 AM");
DateTime new_end_Dt = Convert.ToDateTime("07/28/2014 5:00:00 AM");
//above dates example should found match.
bool _matchfound = false;
if ((new_start_Dt >= old_start_Dt || new_start_Dt <= old_start_Dt)
   && (new_end_Dt >= old_end_Dt || new_end_Dt <= old_end_Dt))
{
    _matchfound = true;
}

猜猜我的逻辑哪里错了?

检查日期时间落在两个日期之间

看起来您的if语句将始终为真。假设您正在测试

new >= old || new <= old

这些中的一个无论如何都必须为真。因此,无论日期的值是多少,if语句的两个部分都为真。

我不确定你到底想要什么,但如果你想测试新范围在旧范围内,这应该可以工作:

if (new_start_Dt >= old_start_Dt && // new starts after old starts
    new_start_Dt < old_end_Dt &&    // new starts before old ends
    new_end_Dt > old_start_Dt &&    // new ends after old starts
    new_end_Dt <= old_end_Dt &&     // new ends before old ends
    old_start_Dt < old_end_Dt &&    // old start is before old end
    new_start_Dt <= new_end_Dt &&)  // new start is before new end
{
    ...
}