2012-11-09 43 views
7

我是新來的Xcode,我有以下問題:如何正確使用NSTimeInterval?

我想要一個方法,給我從一個給定的日期到現在爲止的時間。 如果是2年前,我想返回一個字符串「2年前」,但如果是5分鐘前,我希望它返回一個字符串「5分鐘前」。

我已經檢查過NSTimeInterval和NSDateFormatter,但我找不到一種方法使它工作。

+1

這個問題已經在這裏找到答案,也許一百倍。關於Google搜索有什麼困難? – jimpic

+2

你可能必須自己寫。這是令人震驚的,我知道。 – trojanfoe

回答

14

只是爲了讓你開始...

您可以創建一個基準日期是這樣的:

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

當前日期可以這樣獲得的:

NSDate *now = [NSDate date]; 

時間間隔在幾秒鐘內,所以...

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

我相信你可以從這裏弄清楚自己...

This answer可能會幫助你。

2

謝謝,我想知道是否有一個更簡單的方法來做到這一點 沒有這麼多的代碼行。

你可以創建基準日是這樣的:

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

,或者你試試這個:https://github.com/billgarrison/SORelativeDateTransformer