all*_*loy 6 cocoa nsdate nsdatecomponents
我正试图在不列颠哥伦比亚省时代建立一个约会,但是很难失败.以下返回'4713'作为年份,而不是'-4712':
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [NSDateComponents new];
[components setYear: -4712];
NSDate *date = [calendar dateFromComponents:components];
NSLog(@"%d", [[calendar components:NSYearCalendarUnit fromDate: date] year]);
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
更新:工作代码
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [NSDateComponents new];
[components setYear: -4712];
NSDate *date = [calendar dateFromComponents:components];
NSDateComponents *newComponents = [calendar components:NSEraCalendarUnit|NSYearCalendarUnit fromDate:date];
NSLog(@"Era: %d, year %d", [newComponents era], [newComponents year]);
Run Code Online (Sandbox Code Playgroud)
正如本解释的那样,这为时代打印0.