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