两个nsdates之间的确切年差

时间:2014-09-15 10:48:02

标签: ios nsdate

我从datepicker拿了两个NSDates 我想计算日期之间的确切年份差异。如果我将第二个日期更改为第一天更大,那么它应该给我年份差异2 ...如果把日期缩小,它应该给我0年的差异..我可以实现吗?请帮帮我..

这是我计算差异的代码

 NSCalendar *gregorian1 = [NSCalendar currentCalendar];


    NSUInteger unitFlags = NSYearCalendarUnit;

    NSDateComponents *components1 = [gregorian1 components:unitFlags
                                                fromDate:startDate
                                                  toDate:endDate options:0];
    NSInteger diff = [components1 year];

2 个答案:

答案 0 :(得分:4)

试试这个:

NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit
                                       fromDate:dateA
                                         toDate:dateB
                                        options:0];

NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year);

结果你在日期组件上有所不同。

答案 1 :(得分:1)

Swift 3

extension Date{
    func yearsTo(_ date : Date) -> Int{
        return Calendar.current.dateComponents([.year], from: self, to: date).year ?? 0
    }
}