c#将datetime与其他2个日期进行比较

时间:2011-05-06 10:17:24

标签: c# datetime

我尝试将存储在xml文件中的特定日期periodDate与一个stopDatestartDate进行比较。

因此,如果periodDate介于startDateStopDate之间,请插入数据:

if ((DateTime.Compare(periodTime, startDatePer1) == 1) 
   && (periodTime.CompareTo(stopDatePer1) == 1)) 
{
   // ... insert some data to databse                 
}
else if ((DateTime.Compare(periodTime, startDatePer2) == 1)
        && (periodTime.CompareTo(stopDatePer2) == 1))
{
   // ..... insert data 
}

我的问题是即使if不在periodDatestartDate之间,我也会卡在第一个stopDate上。

5 个答案:

答案 0 :(得分:4)

为什么不:

if(periodDate > startDate && periodDate < stopDate)

答案 1 :(得分:1)

if (periodTime >= startDatePer1 && periodTime <= startDatePer2)
{
  // Then insert data
}

答案 2 :(得分:1)

问题是DateTime.Compare(periodTime, startDatePer1) == 1periodTime.CompareTo(stopDatePer1) == 1都转换为>

将第二个更改为-1,它应该有效。但您不需要使用CompareCompareTo,只需使用<>

答案 3 :(得分:0)

最易读的形式是:

if (startDate < periodTime && periodTime < stopDate) {
}

因为这更清楚地显示了在 startDate和stopDate之间的时间段,即startDate&lt; periodTime&lt; stopDate

答案 4 :(得分:0)

This库包含 TimeRange 类,并支持各种时间段关系:

// ----------------------------------------------------------------------
public void TimeRangeSample()
{
  // --- time range 1 ---
  TimeRange timeRange1 = new TimeRange(
    new DateTime( 2011, 2, 22, 14, 0, 0 ),
    new DateTime( 2011, 2, 22, 18, 0, 0 ) );
  Console.WriteLine( "TimeRange1: " + timeRange1 );
  // > TimeRange1: 22.02.2011 14:00:00 - 18:00:00 | 04:00:00

  // --- time range 2 ---
  TimeRange timeRange2 = new TimeRange(
    new DateTime( 2011, 2, 22, 15, 0, 0 ),
    new TimeSpan( 2, 0, 0 ) );
  Console.WriteLine( "TimeRange2: " + timeRange2 );
  // > TimeRange2: 22.02.2011 15:00:00 - 17:00:00 | 02:00:00

  // --- time range 3 ---
  TimeRange timeRange3 = new TimeRange(
    new DateTime( 2011, 2, 22, 16, 0, 0 ),
    new DateTime( 2011, 2, 22, 21, 0, 0 ) );
  Console.WriteLine( "TimeRange3: " + timeRange3 );
  // > TimeRange3: 22.02.2011 16:00:00 - 21:00:00 | 05:00:00

  // --- relation ---
  Console.WriteLine( "TimeRange1.GetRelation( TimeRange2 ): " +
                     timeRange1.GetRelation( timeRange2 ) );
  // > TimeRange1.GetRelation( TimeRange2 ): Enclosing
  Console.WriteLine( "TimeRange1.GetRelation( TimeRange3 ): " +
                     timeRange1.GetRelation( timeRange3 ) );
  // > TimeRange1.GetRelation( TimeRange3 ): EndInside
  Console.WriteLine( "TimeRange3.GetRelation( TimeRange2 ): " +
                     timeRange3.GetRelation( timeRange2 ) );
  // > TimeRange3.GetRelation( TimeRange2 ): StartInside

  // --- intersection ---
  Console.WriteLine( "TimeRange1.GetIntersection( TimeRange2 ): " +
                     timeRange1.GetIntersection( timeRange2 ) );
  // > TimeRange1.GetIntersection( TimeRange2 ):
  //             22.02.2011 15:00:00 - 17:00:00 | 02:00:00
  Console.WriteLine( "TimeRange1.GetIntersection( TimeRange3 ): " +
                     timeRange1.GetIntersection( timeRange3 ) );
  // > TimeRange1.GetIntersection( TimeRange3 ):
  //             22.02.2011 16:00:00 - 18:00:00 | 02:00:00
  Console.WriteLine( "TimeRange3.GetIntersection( TimeRange2 ): " +
                     timeRange3.GetIntersection( timeRange2 ) );
  // > TimeRange3.GetIntersection( TimeRange2 ):
  //             22.02.2011 16:00:00 - 17:00:00 | 01:00:00
} // TimeRangeSample