5

我需要一段时间,例如一周,然后将其分解为几天,然后进一步分解为几小时、30 分钟、15 分钟等。

然后我希望能够将(可能是多个)人分配到这些时间跨度。

例如

2012 年 5 月 30 日

0700 : 0730 - 爱丽丝,鲍勃

0730 : 0800 - 爱丽丝

……:……

1930 : 2000 - 爱丽丝

2012 年 5 月 31 日

0700 : 0730 - 卡罗尔

0730 : 0800 - 卡罗尔

……:……

1930 : 2000 - 卡罗尔

每天的开始时间和结束时间是可定制的。

我需要能够对工作期间进行排序并查询它们以查看是否有人没有分配给他们。检查一天/一周内没有人被分配到 > x 小时。

我知道 .Net 有 TimeSpan 和 DateTime 但这些似乎很麻烦,因为它们似乎是一些数据的简单表示,而 TimeSpan 没有 StartTime,它纯粹只是一个时间跨度(例如 30 分钟、5 分钟、1 小时等)。

我最初的想法是创建一个名为 WorkingDay 的类,一个 WorkingDay 可以有多个 WorkingPeriod。WorkingPeriod 有一个 StartTime 和 EndTime 以及一个分配给该 WorkingPeriod 的人员列表,使用 AddPerson 和 RemovePerson 的简单方法。

WorkingDay 将具有一项功能,通过运行 WorkingPeriods 并提取分配给任何时间段的所有唯一人员来获取分配给该天的人员列表。它还将具有一个功能,该功能可以提取所有未分配任何人的 WorkingPeriods。

不过,这似乎太麻烦了!尤其是当我需要一些其他的东西来占用多个工作日并检查某人在多天内分配的总时间是否少于 x 小时等。

对此有什么好的结构建议吗?他们是现有的.Net结构,可以提供我所缺少的吗?

4

1 回答 1

10

时隙的最直接(和紧凑)表示是DateTime start, TimeSpan duration.

这很适合查询,不太适合设置和验证(防止重叠等)。

下一个选项是将每天(或每周)划分为固定数量的时段,将这些时段定义一次并将每个时间段编码为DateTime base, int PeriodId. 更适合查找空的和重复的。

于 2012-05-30T12:34:29.873 回答