Как создать определенную дату в далеком прошлом, эпоха BC

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

  •  01-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать дату в эпоху BC, но не сложно. Следующие возвраты «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]);

Любая идея, что я делаю не так?

Обновление: рабочий код

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

Это отпечатки 0 для эпохи, так же, как объяснил Бен.

Это было полезно?

Решение

Ваш код на самом деле работает нормально. Поскольку нет нуля года, -4712 год 4713 г. до н.э. Если вы проверяете компонент ERA, вы увидите, что это ноль, который в Грегорианском календаре указывает на BC. Переверните этот отрицательный знак, и вы увидите 4712 AD (ERA 1).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top