2013-10-25 34 views
3

我正在研究需要为一段时间设置规则的应用程序。该公司有不同的分支机构,每个分支机构都可以设定自己的规则(例如,一个分支上午8点30分开始工作,下午17点30分结束,午餐暂停30分钟;另一分支开始9点,结束时间19点,停顿1小时。 ..).Net - 一天中的时间

所以我需要定义一个类(我们现在称之为WorkingDayDefinition),其中开始和结束实际上并不是DateTime,因为它们没有特别指向任何特定的日子。 目前我在C#中看到的唯一选项是使用Timespan来设置从一天开始的持续时间,因此下午8.30是TimeSpan(8,30,0)将被添加到日期的哪一天。

这是C#中的最佳做法吗?

我搜索了第三方库,可以帮助我,但到目前为止,我最好的选择是这样的一个:

http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET

不是严格什么,我需要

回答

2

你可以使用Noda Time。它提供了一个LocalTime(see here)

本地时间是表示一天中的时间的不可变结构,没有参考特定的日历,时区或日期。

为8.30,你会做这样的事情:

LocalTime openingAt = new LocalTime(8, 30); 
1

对我来说似乎TimeSpam很适合你想要什么。它包含一段时间,有时在两个事件之间,但在你的情况下,从一天的开始到你开始/完成工作的时间。我没有理由不想使用它,只是因为这个名字可能表明这不是该课程的初衷。此外,它已经与日期时间很好地集成在一起,可以随时进行随时计算。