NSDateComponents 打印不准确 day/month/year 次

NSDateComponents not printing accurate day/month/year times

我正在使用 NSDateComponents 分别获取每天、每月、每年、每小时、每分钟等,但是 2017 年 11 月 8 日的日期、月份、年份和秒数不准确 1:00:00... .有人知道我错过了什么吗?

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
        NSDate *date = [dateFormatter dateFromString:@"2017-11-08 1:00:00"];
        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:date];
        NSInteger day = [components day];
        NSInteger month = [components month];
        NSInteger year = [components year];
        NSInteger hour = [components hour];
        NSInteger minute = [components minute];
        NSInteger second = [components second];
        NSLog(@"day: %ld",(long)day);
        NSLog(@"month: %ld",(long)month);
        NSLog(@"year: %ld",(long)year);
        NSLog(@"hour: %ld",(long)hour);
        NSLog(@"minute: %ld",(long)minute);
        NSLog(@"second: %ld",(long)second);

输出:

        day: 2147483647
        month: 2147483647
        year: 2147483647
        hour: 1
        minute: 0
        second: 2147483647

您只会得到小时和分钟,因为这就是您所要求的。如果你真的要求日、月、年和秒,你会得到它们:

NSCalendarUnit units = NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear |
                       NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *components = [calendar components:units fromDate:date];