2012-04-25 15 views
26

Tutaj próbuję obliczyć godziny między dwiema datami. Kiedy uruchamiam aplikację, ulega awarii. Czy mógłbyś mi powiedzieć błąd w tym kodzie?Różnica w godzinach między dwoma NSDate

NSString *lastViewedString = @"2012-04-25 06:13:21 +0000"; 
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"]; 

NSDate *lastViewed = [[dateFormatter dateFromString:lastViewedString] retain]; 
NSDate *now = [NSDate date]; 

NSLog(@"lastViewed: %@", lastViewed); //2012-04-25 06:13:21 +0000 
NSLog(@"now: %@", now); //2012-04-25 07:00:30 +0000 

NSTimeInterval distanceBetweenDates = [now timeIntervalSinceDate:lastViewed]; 
double secondsInAnHour = 3600; 
NSInteger hoursBetweenDates = distanceBetweenDates/secondsInAnHour; 

NSLog(@"hoursBetweenDates: %@", hoursBetweenDates); 
+3

NSLog (@ "hoursBetweenDates:% d", hoursBetweenDates); – adali

+1

Nie ma sensu włączać zmian, które rozwiązują problem do kodu pytania. Po tym edytowaniu twój kod nie przestał działać, więc zrobiłem powrót do pierwotnej wersji pytania. –

+0

Włącz ostrzeżenia w kompilatorze. Wystąpił poważny błąd i po włączeniu ostrzeżeń kompilator powiedziałby o tym. – gnasher729

Odpowiedz

11

myślę różnica powinna być w wartości int ...

NSLog(@"hoursBetweenDates: %d", hoursBetweenDates); 

Hope, to pomoże ..

+0

Tak, masz rację, dziękuję Nit – shebi

11

Nawiązując do this answer of a mostly similar question lepszy i Apple zatwierdziła sposób będzie za pomocą metody NSCalendar tak:

- (NSInteger)hoursBetween:(NSDate *)firstDate and:(NSDate *)secondDate { 
    NSUInteger unitFlags = NSCalendarUnitHour; 
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *components = [calendar components:unitFlags fromDate:firstDate toDate:secondDate options:0]; 
    return [components hour]+1; 
} 

Jeśli kierujesz iOS 8 lub nowszy używają NSCalendarIdentifierGregorian zamiast przestarzałego NSGregorianCalendar.

Powiązane problemy