3
如何將公曆日期轉換爲等效的希伯來語日期? 也請告訴這些日曆,因爲我沒有太多這些知識。Gregorian to希伯來文
如何將公曆日期轉換爲等效的希伯來語日期? 也請告訴這些日曆,因爲我沒有太多這些知識。Gregorian to希伯來文
有一個方便的類叫NSCalendar
。您可以創建一個這樣的:
NSCalendar * gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendar * hebrew = [[NSCalendar alloc] initWithCalendarIdentifier:NSHebrewCalendar];
一旦你的日曆對象,你可以用它們來圍繞轉換日期各種表示:
NSDate * date = [NSDate date];
NSDateComponents * components = [gregorian components:NSUIntegerMax fromDate:date];
NSDate * hebrewDate = [hebrew dateFromComponents:components];
NSLog(@"date: %@", date);
NSLog(@"hebrew: %@", hebrewDate);
在我的機器,這個記錄:
date: 2011-01-09 23:20:39 -0800
hebrew: 1751-09-25 23:20:39 -0800
如果你想的東西轉換爲更易讀的格式,可以使用NSDateFormatter
:
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterLongStyle];
[formatter setTimeStyle:NSDateFormatterNoStyle];
[formatter setCalendar:gregorian]; //this is usually unnecessary; it's here for clarity
NSLog(@"date: %@", [formatter stringFromDate:date]);
[formatter setCalendar:hebrew];
NSLog(@"hebrew: %@", [formatter stringFromDate:hebrewDate]);
[formatter release];
此日誌:
date: January 9, 2011
hebrew: Tishri 9, 2011
這樣看來,NSDateFormatter
使用公曆日期,但至少它得到了正確的月份名稱,對不對?
編輯
其實,我瘋玩。如果您只設置NSDateFormatter
的日曆,則根本無需擔心轉換日期。請參閱:
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterLongStyle];
[formatter setTimeStyle:NSDateFormatterNoStyle];
[formatter setCalendar:hebrew];
NSLog(@"hebrew: %@", [formatter stringFromDate:[NSDate date]]);
[formatter release];
此日誌:
hebrew: Shevat 4, 5771
好多了!是不是可可真棒?
提斯利月是民用年的第一個月(而不是教會年),所以看起來它只是解釋2011-01-09爲希伯來語日期。可能不是一個好主意,去提取日期組件的第一個例子。第二個例子是正確的,2011年1月9日是Sh'vat的第四個,5771. – dreamlax 2011-01-10 07:47:42