我正在开发一个需要为一段时间设置规则的应用程序。公司有不同的分支机构,每个分支机构都可以设置自己的规则(即分支机构在上午8:30开始工作,下午17:30结束工作,午餐暂停30分钟;另一个分支机构从9.00开始,结束于19.00,暂停1小时。 ..)
所以我需要定义一个类(暂时让我们称之为WorkingDayDefinition
),其中start和end实际上不是DateTime
,因为它们没有特别指向任何特定日期。
目前我在C#中看到的唯一选项是使用Timespan
来设置从一天开始的持续时间,以便将晚上8点30分TimeSpan(8,30,0)
添加到任何一天的日期部分。
这是C#中的最佳做法吗?
我搜索了可以帮助我的第三方图书馆,但到目前为止我最好的选择是:
http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET
这不是我所需要的
答案 0 :(得分:2)
您可以使用Noda Time
。它提供了LocalTime
(see here):
LocalTime是一个表示一天中时间的不可变结构,不引用特定日历,时区或日期。
对于8.30,你会做类似的事情:
LocalTime openingAt = new LocalTime(8, 30);
答案 1 :(得分:1)
对我来说,TimeSpam似乎非常适合你想要的东西。它保持一段时间,有时在两个事件之间,但在你的情况下,在一天的开始和你开始/完成工作的时间之间。我没有理由不考虑不使用它只是因为这个名字可能暗示这不是班级的初衷。此外,它已经与DateTimes很好地集成,可以在以后的任何时间进行计算。