Григорианский на иврит - PullRequest
3 голосов
/ 10 января 2011

Как преобразовать григорианскую дату в эквивалентную дату на иврите?Также, пожалуйста, расскажите об этих календарях, поскольку я не очень разбираюсь в них.

1 Ответ

13 голосов
/ 10 января 2011

Есть удобный класс с именем 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 использует григорианскую дату, но, по крайней мере, у него правильное название месяца, верно?

edit

На самом деле я обманываю.Если вы просто установите календарь 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

Намного лучше!Какао не круто?

...