Вопрос

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

Это было полезно?

Решение

Есть удобный класс 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

Намного лучше! Не какао потрясающий?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top