2014-01-06 158 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); 
}