Дата выпуска NSDateFormatter BC / AD

Я пытаюсь понять, как разбирать даты AD и BC с NSDateFormatter и почему в 0000 году не удается выполнить синтаксический анализ.

NSString *test1 = @"0000-01-01"; NSString *test2 = @"0001-01-01"; NSString *test3 = @"0002-01-01 AD"; NSString *test4 = @"0002-01-01 BC"; NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init]; [formatter1 setDateFormat: @"yyyy-MM-dd"]; NSLog(@"test 1 - %@", [formatter1 dateFromString: test1]); NSLog(@"test 2 - %@", [formatter1 dateFromString: test2]); NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; [formatter2 setDateFormat: @"yyyy-MM-dd G"]; NSLog(@"test 3 - %@", [formatter2 dateFromString: test3]); NSLog(@"test 4 - %@", [formatter2 dateFromString: test4]); 

И это то, что он возвращает:

 2012-11-26 11:24:27.536 Test[1968:c07] test 1 - (null) 2012-11-26 11:24:28.615 Test[1968:c07] test 2 - 0001-12-31 22:21:00 +0000 2012-11-26 11:24:37.604 Test[1968:c07] test 3 - 0001-12-31 22:21:00 +0000 2012-11-26 11:24:45.738 Test[1968:c07] test 4 - 0003-12-31 22:21:00 +0000 

Как вы можете видеть, он возвращает null для дат даты и неправильных дат для других вариантов.

Согласно википедии , в системе Anno Domini (AD) не существует нулевого года, который обычно используется для обозначения лет в григорианском календаре и его предшественнике – юлианском календаре. В этой системе за 1 год до н.э. следует AD 1. Однако в астрономическом году нумерация (где она совпадает с юлианским годом 1 г. до н.э.) равна нулю, а в ISO 8601: 2004 (где она совпадает с григорианским годом 1 до н.э.), а также во всех буддийских и индуистских календарях.

Вы не можете правильно зарегистрировать объект даты. Попробуйте преобразовать полученную дату в строку с помощью функции stringFromDate и зарегистрировать вывод.