I am trying to create a date in the BC era, but not very hard. The following result returns 4713 as a year, not '-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]);
Any idea what I'm doing wrong?
UPDATE: Work Code
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]);
This prints 0 for an era, as Ben explained.
cocoa nsdate nsdatecomponents
alloy
source share