3

グレゴリオ暦の日付を同等のヘブライ日付に変換する方法は? また、私はこれらのカレンダーについてあまり知識がないので、これらのカレンダーについて教えてください。

4

1 に答える 1

14

という便利なクラスがあり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-10T07:21:09.310 に答える