我正在编制时间表应用程序,我有一个班级:
名为ClassOption
,表示可能有时间上课。
使用字段(/ properties):Day
,StartTime
,EndTime
和Weeks
。
现在Day
很简单,它的类型是DayOfWeek
Weeks
将要求我制作一个自定义课程,因为它由大学自己的学期周表示法或日历周表示,但最终将归结为一组整数。
但我应该为StartTime
和EndTime
使用哪些来电。
他们是时间,但没有任何日期信息。
DateTime
似乎是一个合理的选择,但它们可以在任何日期。 (/许多日期)
根据业务逻辑,他们都在一小时,但这并不重要
答案 0 :(得分:5)
如果您很高兴使用尚未达到v1的第三方库,我想插入Noda Time。您将使用LocalTime
结构。
如果您坚持使用基类库,可能想要使用TimeSpan
,或者您可以坚持使用DateTime
。显然我认为LocalTime
将是一个更优雅的解决方案,但是:)
哦,如果您确实使用Noda Time,如果您有任何功能要求或意见,请告诉我们......
答案 1 :(得分:2)
您可以使用Time Period Library for .NET的 DateDiff 类来表示时间段:
// ----------------------------------------------------------------------
public void DateDiffSample()
{
DateTime date1 = new DateTime( 2009, 11, 8, 7, 13, 59 );
Console.WriteLine( "Date1: {0}", date1 );
// > Date1: 08.11.2009 07:13:59
DateTime date2 = new DateTime( 2011, 3, 20, 19, 55, 28 );
Console.WriteLine( "Date2: {0}", date2 );
// > Date2: 20.03.2011 19:55:28
DateDiff dateDiff = new DateDiff( date1, date2 );
// description
Console.WriteLine( "DateDiff.GetDescription(1): {0}", dateDiff.GetDescription( 1 ) );
// > DateDiff.GetDescription(1): 1 Year
Console.WriteLine( "DateDiff.GetDescription(2): {0}", dateDiff.GetDescription( 2 ) );
// > DateDiff.GetDescription(2): 1 Year 4 Months
Console.WriteLine( "DateDiff.GetDescription(3): {0}", dateDiff.GetDescription( 3 ) );
// > DateDiff.GetDescription(3): 1 Year 4 Months 12 Days
Console.WriteLine( "DateDiff.GetDescription(4): {0}", dateDiff.GetDescription( 4 ) );
// > DateDiff.GetDescription(4): 1 Year 4 Months 12 Days 12 Hours
Console.WriteLine( "DateDiff.GetDescription(5): {0}", dateDiff.GetDescription( 5 ) );
// > DateDiff.GetDescription(5): 1 Year 4 Months 12 Days 12 Hours 41 Mins
Console.WriteLine( "DateDiff.GetDescription(6): {0}", dateDiff.GetDescription( 6 ) );
// > DateDiff.GetDescription(6): 1 Year 4 Months 12 Days 12 Hours 41 Mins 29 Secs
} // DateDiffSample
答案 2 :(得分:1)
我会使用DateTime,它只能在忽略日期的情况下与时间值一起使用,或者使用TimeSpan,它可以表示自午夜以来经过的时间,从而表示一天中的某个时间。事实上,这正是它在DateTime对象中的使用方式,当你要求TimeOfDay时,你得到一个TimeSpan。
两者都很好,它们为您提供了一组方便的算术运算来比较,加减时间。只需忽略日期部分。