【发布时间】:2012-05-30 12:22:26
【问题描述】:
我需要一段时间,例如一周并将其分解为几天,然后进一步分解为几小时、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 结构,可以提供我所缺少的吗?
【问题讨论】: