2012-11-09 14 views
7

Sono nuovo di Xcode e ho il seguente problema:Come utilizzare NSTimeInterval correttamente?

Voglio un metodo che mi dia il tempo che è passato da una certa data fino ad ora. Se era 2 anni fa voglio restituire una stringa "2 anni fa", ma se fosse 5 minuti fa voglio che restituisca una stringa con "5 minuti fa".

Ho già controllato NSTimeInterval e NSDateFormatter ma non sono riuscito a trovare un modo per farlo funzionare.

+1

questa domanda è stato risposto qui forse un centinaio di volte. Cosa c'è di così difficile su google? – jimpic

+2

Potresti doverlo scrivere tu stesso. È scioccante, lo so. – trojanfoe

risposta

14

Proprio per iniziare ...

Si creerebbe una data di riferimento del genere:

NSCalendar *gregorian = [[NSCalendar alloc] 
          initWithCalendarIdentifier:NSGregorianCalendar]; 

NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; 
dateComponents.year = 2012; 
dateComponents.month = 1; 
dateComponents.day = 1; 
dateComponents.hour = 0; 
dateComponents.minute = 0; 
dateComponents.second = 0; 

NSDate *referenceDate = [gregorian dateFromComponents: dateComponents]; 

La data può essere ottenuto in questo modo:

NSDate *now = [NSDate date]; 

intervallo di tempo è in secondi, quindi ...

NSTimeInterval interval = [now timeIntervalSinceDate:referenceDate]; 
NSLog (@"reference date was %.0f seconds ago", interval); 

Sono sicuro che sarai in grado di capirlo da solo ...

This answer potrebbe aiutarti.

2

Grazie, mi chiedevo se c'è un modo più semplice per farlo senza avere così tante linee di codice.

Si potrebbe creare alla data di riferimento in questo modo:

NSDate *referenceDate = [NSDate date]; 
[[NSCalendar currentCalendar] rangeOfUnit:NSYearCalendarUnit 
           startDate:&referenceDate 
           interval:NULL 
            forDate:referenceDate]; 

oppure provare questo: https://github.com/billgarrison/SORelativeDateTransformer

Problemi correlati