2016-08-05 5 views
0
NSDate *currentTime = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
         [dateFormatter setDateFormat:@"hh:mm"]; 
NSString *resultString = [dateFormatter stringFromDate: currentTime]; 
NSDate* firstDate = [dateFormatter dateFromString:resultString]; 
NSDate* secondDate = [dateFormatter dateFromString:@"16:00"]; 
NSTimeInterval timeDifference = [secondDate timeIntervalSinceDate:firstDate]; 

if (timeDifference < 0){ 

Я пытаюсь получить текущее время и сравнить его с временем ввода. Это часть моего кода на данный момент (цель c для iOS), но NSTimeInterval вызывает точку останова. В дополнение к этому я также хотел бы включить дату в сравнение, поэтому, если после 17:00 во вторник произойдет событие. Поэтому, если у вас есть какие-то идеи о том, как включить это, было бы весьма полезно!Сравните текущую дату и время iOS

+0

Нижеприведенный ответ Иоанна является базовой формой для сравнения дат. (И обратите внимание, что нет необходимости конвертировать в строку и обратно, прежде чем сравнивать.) Эта строка о «после 5 вечера во вторник» немного подлая и может потребовать отдельный вопрос - нужно указать поведение временных зон, «любой» вторник и т. д. –

ответ

2

Для сравнения двух дат:

if ([firstDate compare:secondDate] == NSOrderedDescending) { 
    NSLog(@"firstDate is later than secondDate"); 
    NSTimeInterval timeDifference = [firstDate timeIntervalSinceDate:secondDate]; 
} else if ([firstDate compare:secondDate] == NSOrderedAscending) { 
    NSLog(@"firstDate is earlier than secondDate"); 
    NSTimeInterval timeDifference = [secondDate timeIntervalSinceDate:firstDate]; 
} else { 
    NSLog(@"firstDate and secondDate are the same"); 
} 

Это должно решить ваши проблемы.

+0

Что делать, если я хочу, чтобы это было только на определенный день? Скажите, если его 5:00 во вторник произойдет событие, но ср. В 5:00 этого не будет. – DSmith

+2

@DSmith: «дата», воплощенная в качестве объекта NSDate, представляет собой конкретную единую точку в реальном времени в абсолютном глобальном смысле. Этот момент времени может отображаться как дата и время для определенного часового пояса или по сравнению с другими конкретными моментами времени. Он * не * указывает общее «время суток» или любую другую общую концепцию. Если вы хотите выяснить, как представлять то, что вы ищете, возможно, вы захотите задать этот вопрос более конкретно, чтобы помочь ему в его моделировании. –

0
NSDate *currentTime = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
         [dateFormatter setDateFormat:@"hh:mm"]; 
NSString *resultString = [dateFormatter stringFromDate: currentTime]; 
NSDate* firstDate = [dateFormatter dateFromString:resultString]; 
NSDate* secondDate = [dateFormatter dateFromString:@"16:00"]; 
NSComparisonResult result = [secondDate compare:firstDate]; 
     switch(result){ 
      case NSOrderedDescending: 
       NSLog(@"date1 is later than date2"); 
       break; 
      case NSOrderedAscending: 
       NSLog(@"date1 is earlier than date2"); 
       break; 
      default: 
       NSLog(@"dates are the same"); 
       break; 
     } 
Смежные вопросы