Я пытаюсь получить секунды между двумя датами, для этого я использую NSDateComponents:С датой не может быть нулем в Objective-C
NSString *start = components2[0];// 2014-10-14 20:52:43
NSString *end = components[0];// 2014-10-14 20:54:40
NSLog(@"Start -> %@, End -> %@",start,end);
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *startDate = [f dateFromString:start];
NSDate *endDate = [f dateFromString:end];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components3 = [gregorianCalendar components:NSDayCalendarUnit
fromDate:startDate
toDate:endDate
options:0];
NSLog(@"Seconds -> %ld", (long)[components3 second]);
Но я получаю следующее сообщение об ошибке:
-[__NSCFCalendar components:fromDate:toDate:options:]: fromDate cannot be nil
Ну, что говорится в сообщении - 'fromDate' равно нулю, и они этого не позволяют. Если вы посмотрите на 'startDate' (и, вероятно,' endDate' тоже), это нуль, потому что вы использовали неправильный формат даты. http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns –
Если вы строго ищете секунды между двумя датами, выполните следующие действия: «NSTimeInterval secondsElapsed = [endDate timeIntervalSinceDate: startDate ] 'Но ваш вопрос действительно спрашивает:« Почему я не могу получить дату из форматирования »:) –
Извините, но пользователь Rob Mayoff делает все правильно, проблема в использовании HH ... – user3781174