我有一个DateTime
对象集合。我需要从这个原始列表中“解析”出子集合,以根据重复获取相关项目。所以我需要采取这个单一的原始集合:
var collectionOfDateTime = GetDateTimeCollection();
并将其转换为DateTime
集合列表,其中每个集合都包含来自第一个列表的一组日期,这些日期遵循特定的重复模式。
在下面的示例中,我不包括时间,但在实际要求中,这些项目同时具有日期和时间元素。因此,例如,日期需要相隔 7 天,但也要相同(2 月 3 日上午 11 点的时间与 2 月 10 日下午 3 点不匹配,但与 2 月 10 日上午 11 点匹配)
例如,假设我的重复模式是“每周”(在其他情况下可能是“每月”),我的日期集合如下所示:
var date1 = DateTime.Today.AddHours(8);
var date2 = DateTime.Today.AddWeeks(1).AddHours(8);
var date3 = DateTime.Today.AddDays(3);
var date4 = DateTime.Today.AddWeeks(8).AddHours(6);
var collectionOfDateTime = new List<DateTime>() { date1, date2, date3, date4 };
我想要一个函数(让我们调用它StripOutSubCollections()
)传递collectionOfDateTime
它的“每周”这一事实并返回一个包含date1
,的集合date2
(因为它们都是同一个每周时段的一部分)。注意 date3 不适合, date4 也不适合,因为时间与其他时间不匹配
另一个帮助证明需求的例子,如果原始集合的输入是这样的:
var date1 = DateTime.Today;
var date2 = DateTime.Today.AddWeeks(1);
var date3 = DateTime.Today.AddDays(3);
var date4 = DateTime.Today.AddWeeks(8);
var date5 = DateTime.Today.AddDays(3).AddWeeks(2);
var collectionOfDateTime = new List<DateTime>() { date1, date2, date3, date4, date5 };
我希望这个函数返回 2 个列表(一个带有date1
,date2
和date4
的列表)和另一个带有date3
and的列表date5
。
让我知道是否需要更多示例来阐明要求?请注意,其中一个日期可能会落入多个输出列表中,这很好。
我可以将每周转换为数字 7 并循环遍历每个项目,从第一个项目开始到最后,然后第二个项目到最后,然后是第三个项目,等等,但想看看是否有更优雅的方式