Objective-C返回岁月&特定日期以来的日子

时间:2013-02-17 13:46:45

标签: ios objective-c cocoa-touch

我观察了特定方法的文档,该方法获得了日期之间的间隔:

- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate

我需要这种方法(或替代方法)来向我提供自给定日期以来的年份和日期。

我怎么能计算出来?我可以使用days / 365然后剩下的就是日子,但这不是很准确,我需要精确度。

谢谢!

1 个答案:

答案 0 :(得分:3)

使用- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate在许多情况下会失败(夏令时,闰秒......),您应该考虑日历,因为他们都知道这一点。

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorianCalendar components:(NSDayCalendarUnit |NSYearCalendarUnit )
                                                    fromDate:startDate
                                                      toDate:[NSDate date]
                                                     options:0];

NSLog(@"%ld", [components day]);
NSLog(@"%ld", [components year]);