Pregunta

Estoy intentando crear una fecha en la era antes de Cristo, pero no muy duro. Las siguientes declaraciones de ‘4713’ como el año, en lugar de ‘’ -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]);

Cualquier idea de lo que estoy haciendo mal?

ACTUALIZACIÓN: Código de Trabajo

    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]);

Esta impresora es 0 en la época, al igual que Ben explicó.

¿Fue útil?

Solución

bien

Su código está trabajando realmente. Dado que no hay año cero, -4712 es el año 4713 antes de Cristo. Si marca el componente época verá que es cero, lo que en el calendario gregoriano indica antes de Cristo. Voltear ese signo negativo y verá 4712 dC (época 1).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top