如何从NSDateComponents获得绝对价值

时间:2019-06-04 11:32:48

标签: objective-c

我想从NSDateComponents中获取绝对价值。

<NSDateComponents: 0x600000477c80>
Calendar Year: -1

我尝试了以下方法,但是我没有得到确切的值,如何从组件中获得值1。

    NSDate *startDate = [formatter dateFromString:birthDate];
    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents *components = [gregorianCalendar components:NSCalendarUnitYear
                                                        fromDate:startDate
                                                          toDate:today
                                                         options:0];

    NSInteger year = [components year];

1 个答案:

答案 0 :(得分:0)

如果要获取年份之间的日期差,则必须使用方法:calendar: fromDate: toDate:

如果您只想从日期中获取年份,则必须使用以下方法:calendar: fromDate:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy hh:mm:ss"];

NSDate *today = [NSDate date];
NSString *birthDate = @"04/06/1984 01:45:20";
NSDate *startDate = [formatter dateFromString:birthDate];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

//NSDateComponents *components = [gregorianCalendar components:NSCalendarUnitYear fromDate:startDate toDate:today options:0];  //Option 1
NSDateComponents *components = [gregorianCalendar components:NSCalendarUnitYear fromDate:startDate];  // Option 2

NSInteger year = [components year];
NSLog(@"Years : %ld", year);

如果使用选项1的方法,则它将打印Years : 35

如果您使用选项2的方法,那么它将给出Years : 1984