iOS Определение времени, прошедшего с определенной даты

Я играл с NSDate и NSTimeInterval, чтобы попытаться получить время, прошедшее с определенной даты, но мне не очень повезло.

Я хочу указать точную постоянную дату (5 января 2012 г., 14:00) и рассчитать время, прошедшее в годах, часах, минутах, секундах, и отобразить это на экране в виде счетчика.

Это кажется достаточно простым; однако просмотр кода еще не оказался успешным для меня.

Я также хочу увидеть общее время в формате лет, месяцев, минут, секунд. Я ценю любую помощь, спасибо!

Это пример, который я обнаружил, что не знаю, как настроить:

NSCalendar *c = [NSCalendar currentCalendar];
NSDate *d1 = [NSDate date];
NSDate *d2 = [NSDate dateWithTimeIntervalSince1970:1340323201];//2012-06-22
NSDateComponents *components = [c components:NSHourCalendarUnit fromDate:d2 toDate:d1 options:0];
NSInteger diff = components.minute;

NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit

person Kyle Begeman    schedule 11.02.2013    source источник
comment
код? что вы сделали до сих пор?   -  person oiledCode    schedule 12.02.2013
comment
Лучшее, что я нашел до сих пор, это:   -  person Kyle Begeman    schedule 12.02.2013
comment
NSCalendar *c = [NSCalendar currentCalendar]; NSDate *d1 = [дата NSDate]; NSDate *d2 = [NSDate dateWithTimeIntervalSince1970:1340323201];//2012-06-22 NSDateComponents *components = [c component:NSHourCalendarUnit fromDate:d2 toDate:d1 options:0]; NSInteger diff = компоненты.минута; NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit   -  person Kyle Begeman    schedule 12.02.2013
comment
Вы смотрели спецификацию для NSCalendar?   -  person Hot Licks    schedule 12.02.2013
comment
в строке NSDateComponents *components = [c components:NSHourCalendarUnit fromDate:d2 toDate:d1 options:0]; вы должны включить все компоненты, которые вы хотите, а не только NSHourCalendarUnit   -  person tkanzakic    schedule 12.02.2013


Ответы (1)


Как сказал tkanzakic,

NSDateComponents* components = [c components:(NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit) fromDate:d1 toDate:d2 options:0] ;
NSLog(@"%ld years, %ld hours, %ld minutes, %ld seconds",  components.year, components.hour, components.minute, components.second) ;
person John Sauer    schedule 11.02.2013
comment
Отлично! Единственная проблема заключается в том, как мне сделать d2 равным 5 января 2012 года в 14:00, чтобы он давал мне правильные временные рамки? - person Kyle Begeman; 12.02.2013
comment
@KyleBegeman - И вы хотите, чтобы кто-то сделал это за вас, а не выяснял, как использовать для этого NSCalendar или NSDateFormatter? - person Hot Licks; 12.02.2013
comment
Кайл, см. ответы @HotLicks и Индера здесь: не удается найти правильный формат даты nsdateformatter для этого "> stackoverflow.com/questions/14712801/ - person John Sauer; 12.02.2013