Я бы рекомендовал использовать - (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSUInteger)opts
метод NSCalendar
, чтобы получить относительные единицы времени между сейчас и вашими датами, используя что-то вроде этого:
NSDate *dateToCompare = pointerToYourDatePulledFromTheStringRep;
NSInteger numberOfUnits;
NSString *unitString;
NSDateComponents *comps = [[NSCalendar currentCalendar]
components:(NSWeekCalendarUnit |
NSDayCalendarUnit |
NSHourCalendarUnit |
NSMinuteCalendarUnit |
NSSecondCalendarUnit)
fromDate:dateToCompare
toDate:[NSDate date]
options:0];
if ([comps week] > 0) {
numberOfUnits = [comps week];
unitString = @"week";
} else if ([comps day] > 0) {
numberOfUnits = [comps day];
unitString = @"day";
} else if... // hour, minute, second
result = [NSString stringWithFormat:@"%d %@%@",
numberOfUnits,
unitString,
(numberOfUnits != 1 ? @"s" : @"")];
// last bit deals with plurality
Таким образом, функции ОС работаютсо всей математикой для фиников, и вы получаете преимущества точности и совместимости с несколькими календарями.
Что касается вашего вопроса (технически) о том, почему ваши секунды выходят НЕ как минуты, я бы предположилчто SECONDS_IN_MIN
определено неправильно.Но, опять же, использование NSCalendar
дает более надежный ответ.