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 回答