如何将Gregorian日期转换为同等的希伯来日期?另外,请告诉这些日历,因为我对这些日历没有太多了解。

有帮助吗?

解决方案

有一个方便的课堂叫 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 是否使用Gregorian日期,但至少它有正确的月份名称,对吗?

编辑

实际上,我愚弄了。如果您只是设置 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

好多了!可可吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top