c#比较日期时间和其他2日期

问题描述:

我试图比较一个特定的日期periodDate存储在一个xml文件与一个stopDatestartDatec#比较日期时间和其他2日期

所以,如果periodDatestartDateStopDate之间插入数据:

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即使periodDate没有startDatestopDate之间。

+0

'if(periodDate> = startDate && periodDate Bobby 2011-05-06 10:20:09

+0

你为什么卡住了,没有让你这么做? – V4Vendetta 2011-05-06 10:23:56

的问题是既DateTime.Compare(periodTime, startDatePer1) == 1periodTime.CompareTo(stopDatePer1) == 1转化为>

将第二个更改为-1,它应该工作。但你并不需要使用CompareCompareTo,只是使用<>

为什么不:

if(periodDate > startDate && periodDate < stopDate) 
+0

感谢这工作perfekt – dumbel 2011-05-06 10:27:49

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

最可读的形式是:

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

由于这更清楚地显示了一段时间躺在之间的startDate和stopDate即的startDate < periodTime < stopDate

This库包括类TimeRange支持vario我们的时间关系:

// ---------------------------------------------------------------------- 
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