日期范围内的DateTime

本文关键字:DateTime 范围内 日期 | 更新日期: 2023-09-27 18:11:55

我知道这样的问题已经被问了一百次了,但他们的答案对我不起作用。

我有一个对象(称之为ObjectA(,它的起点为DateTime,终点为DateTime。我有另一个对象集合(List(ObjectB)((不同于ObjectA(,它们具有带开始和结束的DateTime范围。我正在查找List(ObjectB)中日期范围与ObjectA范围重叠的所有对象。让我们看看我能对一个例子做些什么。。。

ObjectA.StartTime='2015年7月31日00:00:00'
ObjectA.EndTime='8/2/2015 00:00:00'

列表(ObjectB(
B1.StartTime='2015年7月1日00:00:00'
B1.EndTime="2015年8月1日00:00:00">

B2.StartTime='2015年7月1日00:00:00'
B2.EndTime='2016年7月1日23:59:59'

B3.开始时间='8/1/2015 13:00:00'
B3.结束时间='8/15/2015 23:59:59'

现在,我的列表应该包括B2和B3,因为它们都与我的ObjectA时间重叠。但是,它不应该包括B1,因为B1的时间在另一个时间开始之前结束。

我当前的代码如下

myList = myList.Where(x => x.StartDate < ObjectA.StartDate && x.EndDate > ObjectA.EndDate).ToList();

我正在获取列表中返回的所有3个ObjectB。我已经用一百种不同的方式改变了这一点,但我并没有得到我所期望的。

这把我逼疯了。任何帮助都将不胜感激!

日期范围内的DateTime

myList = myList.Where(x => x.StartDate < ObjectA.EndDate && x.EndDate > ObjectA.StartDate).ToList();

ObjectA结束之前已经开始的所有对象,以及在它开始之前尚未结束的所有对象。

您最初编写的代码只捕获开始和结束日期完全包含ObjectA持续时间的对象。

我很困惑为什么您不希望代码返回B1。它从07-01开始到08-01结束,而ObjectA从07-31开始到08-02结束,这意味着它们的日期范围将从07-31到08-01重叠。