2014-01-06 162 views
1

我似乎无法弄清楚文档中的任何地方或在线多长时间的NSCalendarUnitEra。我假设时间超过一年,还是可以指定长度?谁能帮忙?NSCalendarUnitEra需要多长时间?

+5

时代将是(例如与公历)BC/AD。 – rmaddy

+0

@rmaddy哦,谢谢,有没有指定单位长度的地方?我检查过CFCalendar.h,但我不知道值来自哪里。 – Milo

回答

4

日历时代的长度根据引用它的日历的方式而有所不同。

例如,公历使用BCE和AD作为其两个时代。所以如果你认为时间是无限的,你可以想象任何一年的数字都可能存在,或者在BCE时代倒退或者在AD时代倒退。因此,每个时代都可以被认为是一个时间轴,它有一个端点,并且在另一个方向上延伸(本质上)无穷大。

虽然许多日历使用BCE/AD时代系统,但有些只有一个时代(例如希伯来文&伊斯兰教)。很明显,如果这个时代只有一个时代持续下去。 (相当长)

日历是最奇特的 - 在框架中的日历。那个时代与皇帝的生活息息相关。 NSCalendar框架在日历上列出了236个时代。其中很多时间都很短,例如“安娜(968-970)”。

苹果对使用日期一对夫妇很好的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); 
}