代表时间的最佳班级

时间:2012-02-01 10:19:26

标签: c# .net datetime time f#

我正在编制时间表应用程序,我有一个班级: 名为ClassOption,表示可能有时间上课。 使用字段(/ properties):DayStartTimeEndTimeWeeks

现在Day很简单,它的类型是DayOfWeek

Weeks将要求我制作一个自定义课程,因为它由大学自己的学期周表示法或日历周表示,但最终将归结为一组整数。

但我应该为StartTimeEndTime使用哪些来电。 他们是时间,但没有任何日期信息。 DateTime似乎是一个合理的选择,但它们可以在任何日期。 (/许多日期) 根据业务逻辑,他们都在一小时,但这并不重要

3 个答案:

答案 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。

两者都很好,它们为您提供了一组方便的算术运算来比较,加减时间。只需忽略日期部分。