2014-01-06 2 views
1

Я не могу найти нигде в документации или в Интернете, как долго NSCalendarUnitEra. Я предполагаю больше, чем год, или можно указать длину? Может ли кто-нибудь помочь?Как долго NSCalendarUnitEra?

+5

Эра была бы (например, с григорианским календарем) BC/AD. – rmaddy

+0

@rmaddy О, спасибо, есть ли место, которое указано в единицах длины? Я проверил CFCalendar.h, но я понятия не имею, откуда взялись эти значения. – Milo

ответ

4

Длина календарной эры зависит от того, как она определяется календарем, который ссылается на нее.

Например, григорианский календарь использует BCE и AD как две его эпохи. Поэтому, если вы считаете время бесконечным, вы могли бы представить, что любой год может существовать либо в обратном направлении в эпоху BCE, либо в эпоху AD. Поэтому каждую эпоху можно рассматривать как временную шкалу, которая имеет один конец и простирается в другом направлении (по существу) бесконечности.

Хотя многие календари используют систему эпохи BCE/AD, некоторые из них имеют только одну эпоху (например, иврит &). Так что, очевидно, если существует только одна эпоха, эра длится все время. (довольно длинный)

Японский календарь является самым своеобразным - из тех, что находятся в каркасе. Там эпоха связана с жизнью императора. Рамка NSCalendar имеет 236 эпох, перечисленных для японского календаря. Многие из этих эпох довольно короткие «Анна (968-970)» для одного примера.

Apple, имеет несколько очень хорошие WWDC переговоры о работе с датами:

  • WWDC 2010 - Сессия 117 - Выполнение Календарь Расчеты (23м - Японский календарь эпохи обсуждается)
  • WWDC 2013 - Сессия 227 - Решения к общей дате и вызовам времени

Как долго это NSCalendarUnitEra?

Это зависит от календаря.

Я предполагаю, что больше, чем год

достаточно безопасным предположение - за исключением очень незадачливого императора.

Чтобы просмотреть все эры, используемые во всех календарях, просто перечислите календари и получите доступ к массиву longEraSymbols.

примечание: пульт NSLog() не может отображать японские символы правильно, но он сохраняет код простым.

NSArray *calendarIdentifiers = 
    @[NSCalendarIdentifierGregorian, 
     NSCalendarIdentifierBuddhist, 
     NSCalendarIdentifierChinese, 
     NSCalendarIdentifierCoptic, 
     NSCalendarIdentifierEthiopicAmeteMihret, 
     NSCalendarIdentifierEthiopicAmeteAlem, 
     NSCalendarIdentifierHebrew, 
     NSCalendarIdentifierISO8601, 
     NSCalendarIdentifierIndian, 
     NSCalendarIdentifierIslamic, 
     NSCalendarIdentifierIslamicCivil, 
     NSCalendarIdentifierJapanese, 
     NSCalendarIdentifierPersian, 
     NSCalendarIdentifierRepublicOfChina]; 
for (NSString *calendarIdentifier in calendarIdentifiers) { 
    NSCalendar *cal = [NSCalendar calendarWithIdentifier:calendarIdentifier]; 
    NSLog(@"Name:%@ NumberOfEras:%li Eras:%@",calendarIdentifier,cal.longEraSymbols.count,cal.longEraSymbols); 
} 
Смежные вопросы