如何正确使用NSTimeInterval?

时间:2012-11-09 13:53:05

标签: objective-c ios cocoa-touch nsdate nstimeinterval

我是Xcode的新手,我遇到了以下问题:

我想要一个方法,它给了我从给定日期到现在已经过去的时间。 如果它是2年前我想要返回一个字符串&#34; 2年前&#34;,但如果它是5分钟前我希望它返回一个字符串&#34; 5分钟前&#34;。< / p>

我已经检查过NSTimeInterval和NSDateFormatter,但我找不到让它工作的方法。

2 个答案:

答案 0 :(得分: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可能会帮助你。

答案 1 :(得分:2)

  

谢谢,我想知道是否有更简单的方法   没有这么多行代码。

您可以像这样创建参考日期:

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

或者你试试这个:https://github.com/billgarrison/SORelativeDateTransformer