2012-11-09 8 views
7

Ich bin neu in Xcode und ich habe folgendes Problem:Wie benutze ich NSTimeInterval richtig?

Ich möchte eine Methode, die mir die Zeit gibt, die seit einem bestimmten Datum bis jetzt vergangen ist. Wenn es vor 2 Jahren war, möchte ich eine Zeichenkette "vor 2 Jahren" zurückgeben, aber wenn es vor 5 Minuten war, möchte ich eine Zeichenkette mit "vor 5 Minuten" zurückgeben.

Ich habe bereits NSTimeInterval und NSDateFormatter überprüft, aber ich konnte keinen Weg finden, damit es funktioniert.

+1

diese Frage hier beantwortet wurde vielleicht hundertmal. Was ist so schwer am googeln? – jimpic

+2

Sie müssen das vielleicht selbst schreiben. Es ist schockierend, ich weiß. – trojanfoe

Antwort

14

Nur zum Einstieg ...

Sie möchten gerne ein Referenzdatum wie folgt erstellen:

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]; 

Aktuelles Datum kann wie folgt erhalten:

NSDate *now = [NSDate date]; 

Zeitintervall in Sekunden, so ...

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

Ich bin sicher, dass Sie in der Lage sein werden, es von hier aus auf ...

This answer könnte Ihnen helfen.

2

Danke, ich frage mich, ob es einen einfacheren Weg gibt, es zu tun ohne so viele Zeilen Code zu haben.

Sie könnten das Referenzdatum wie folgt erstellen:

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

oder Sie versuchen, diese: https://github.com/billgarrison/SORelativeDateTransformer