Как получить абсолютное значение из NSDateComponents - PullRequest
0 голосов
/ 04 июня 2019

Я хочу получить абсолютное значение от 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 голосов
/ 07 июня 2019

Если вы хотите получить разницу дат в годах, то вы должны использовать метод: calendar: fromDate: toDate:

А если вы хотите получить только год от даты, то вы должны использовать этоmethod: 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...