-1

当前日期不应早于开始日期结束日期,但它可以等于开始日期结束日期

我应该如何修改代码?

for(AllBookings *book in bookarray)
{

    NSString *startdte = book.StartDate; //taking start date from array
    NSString *enddte = book.EndDate;
    NSDate *start = [self getDateFromJSON:startdte];
    NSDate *end = [self getDateFromJSON:enddte];
    NSDate *now = [NSDate date];

    NSTimeInterval fromTime = [start timeIntervalSinceReferenceDate];
    NSTimeInterval toTime = [end timeIntervalSinceReferenceDate];
    NSTimeInterval currTime = [[NSDate date] timeIntervalSinceReferenceDate];

    if((fromTime<currTime) && (toTime>=currTime))//checking if currnt is in btw strt n end
    {
        success = TRUE;
        break;

    }
    else {
        success = FALSE;
    }

}
4

3 回答 3

1

以下是我在应用程序中使用的工作代码,我已根据您的要求进行了更改:

 -(void)isSuitableTime{
  NSDateFormatter *df = [[NSDateFormatter alloc] init];
  [df setDateFormat:@"HH:mm"];

   NSDate *currentTime = [NSDate date];
   NSString *currentTimeString = [df stringFromDate: currentTime];

   NSDate *gpsTimeCurrent= [df dateFromString:currentTimeString];
   NSDate *gpsTimeFrom = [df dateFromString:@"09:00" ];
   NSDate *gpsTimeTo = [df dateFromString:@"17:00"];

   NSTimeInterval intervalFromTimeToCurrent = 
             [gpsTimeCurrent timeIntervalSinceDate:gpsTimeFrom];

   NSTimeInterval intervalCurrentToTimeTo = 
                 [gpsTimeTo timeIntervalSinceDate:gpsTimeCurrent];

   NSLog(@"intervalToTimeToCurrent is %f",intervalCurrentToTimeTo);

   if ((intervalFromTimeToCurrent>0) && (intervalCurrentToTimeTo >0)) {
                NSLog(@"In my time range");
    } 
    else {
    NSLog(@"Out of my time range");
    }

 }
于 2013-05-16T07:41:03.080 回答
0

使用 NSDate 的compare:方法而不是if (current > fromTime)

From the class reference:

If:
The receiver and anotherDate are exactly equal to each other, NSOrderedSame.
The receiver is later in time than anotherDate, NSOrderedDescending.
The receiver is earlier in time than anotherDate, NSOrderedAscending.


you can use

if([current compare: From] == NSOrderedDescending||NSOrderedSame
   && [current compare: Totime]== NSOrderedAescending||NSOrderedSame)
{
  // Current is between to and From 
}
于 2013-05-16T07:16:04.503 回答
0

使用这个方法 mate

- (BOOL)isDate:(NSDate *)date inRangeFirstDate:(NSDate *)firstDate lastDate:(NSDate *)lastDate {
       return [date compare:firstDate] == NSOrderedDescending && [date compare:lastDate]  == NSOrderedAscending;
}
于 2013-05-16T07:12:52.177 回答