Comment créer une date spécifique dans le lointain passé, l'ère de la Colombie-Britannique

StackOverflow https://stackoverflow.com/questions/2719510

  •  01-10-2019
  •  | 
  •  

Question

Je suis en train de créer une date à l'ère de la Colombie-Britannique, mais à défaut assez difficile. Les rendements suivants « 4713 » comme l'année, au lieu 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]);

Toute idée de ce que je fais mal?

MISE À JOUR: Code de travail

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

Cette impression 0 pour l'époque, tout comme Ben expliqué.

Était-ce utile?

La solution

Votre code fonctionne vraiment bien. Comme il n'y a pas d'année zéro, -4712 est l'année 4713 en Colombie-Britannique. Si vous cochez la composante de l'époque, vous verrez que c'est zéro, ce qui dans le calendrier grégorien indique la Colombie-Britannique. Retournez ce signe négatif et vous verrez 4712 AD (ère 1).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top