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];
我正在使用 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];