次の 2 つの日付文字列があります: (1) 24/04/2013および (2) 19/03/2013これらの日付をイスラム (Um Al Qura) の日付に変換しようとしています。このコード ブロックを使用してそうする:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"dd/MM/yyyy";
df.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *dateInGrogrian = [df dateFromString:@"24/04/2013"];
NSDateFormatter *df2 = [[NSDateFormatter alloc] init];
NSCalendar * cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSIslamicCalendar];
[df2 setCalendar:cal];
[df2 setDateFormat:@"dd/MM/yyyy"];
NSLog(@"Converted date to Islamic = %@",[df2 stringFromDate:dateInGrogrian]);
入力文字列が 24/04/2013 の場合、次のようにNSLog
表示されます。
Converted date to Islamic = 14/06/1434
これは正しいです (すべてのイスラム諸国で使用されている正式なイスラム暦によると)。しかし、入力文字列が 2013 年 3 月 19 日の場合、次のようにNSLog
表示されます。
Converted date to Islamic = 08/05/1434
これは正しくありません (イスラム暦によると、正しい日付は 1434 年 7 月 5 日であり、1 日遅れています)。
-回答を提案する前に考慮すべき注意事項:
(1)NSIslamicCivilCalendar
の代わりにカレンダー識別子を使用しようとしましたNSIslamicCalendar
が、役に立ちませんでした: 変換された日付の 1 つが正しく、もう 1 つが間違っていました (1 日遅れ)。
(2)次のように GMT タイム ゾーンを使用しようとしました: [df2 setTimeZone : [NSTimeZone timeZoneWithName:@"GMT"]];
、これにより、(2) 日については正しい変換日付が生成されましたが、(1) 日については正しくありません (1 日遅れ)。
(3)解決策の組み合わせを試しました:NSIslamicCivilCalendar
GMTタイムゾーンありNSIslamicCalendar
/なし、GMTタイムゾーンあり/なし、でも役に立たなかった...
両方の日付を満たすコードブロックを提供できる人はいますか? そのため、提供されたグレゴリオ暦の日付文字列がイスラムの日付文字列に正しく変換されるようにします。
どうもありがとうございます。