我尝试将存储在xml文件中的特定日期periodDate
与一个stopDate
和startDate
进行比较。
因此,如果periodDate
介于startDate
和StopDate
之间,请插入数据:
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
和startDate
之间,我也会卡在第一个stopDate
上。
答案 0 :(得分:4)
为什么不:
if(periodDate > startDate && periodDate < stopDate)
答案 1 :(得分:1)
if (periodTime >= startDatePer1 && periodTime <= startDatePer2)
{
// Then insert data
}
答案 2 :(得分:1)
问题是DateTime.Compare(periodTime, startDatePer1) == 1
和periodTime.CompareTo(stopDatePer1) == 1
都转换为>
。
将第二个更改为-1,它应该有效。但您不需要使用Compare
或CompareTo
,只需使用<
和>
答案 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