7

Xcodeを初めて使用しますが、次の問題があります。

ある日から今までの時間を与えてくれる方法が欲しいです。2年前なら「2年前」の文字列を返したいのですが、5分前なら「5分前」の文字列を返したいです。

NSTimeIntervalとNSDateFormatterをすでに確認しましたが、それを機能させる方法が見つかりませんでした。

4

2 に答える 2

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

これからは自分で理解できると思います...

この答えはあなたを助けるかもしれません。

于 2012-11-09T14:39:24.557 に答える
2

ありがとうございます。これほど多くのコード行がなくても、もっと簡単な方法があるのではないかと思いました。

次のように参照日を作成できます。

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

または、これを試してください:https ://github.com/billgarrison/SORelativeDateTransformer

于 2012-11-11T23:02:12.887 に答える