Search code examples
objective-cnsdatensdateformatternscalendar

Changing Gregorian Month and Days names to Islamic? NSDate


I'm trying to display the Islamic current day name , month name. I used NSLocale to set the region to ar_SA, however it's just translating the day and month names from English to Arabic.

Output I'm getting in Arabic:

١٢ الأحد ، اكتوبر ، ٢٠١٢ which in English is Sunday, October 28, 2012

Output I want:

Al-Ahad, Dul-Hijja 12, 1433

Snippet:

NSDateFormatter *islamicFormatter = [[NSDateFormatter alloc]init];
[islamicFormatter setDateStyle:NSDateFormatterFullStyle];
[islamicFormatter setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"ar_SA"]];
NSString *islamicDateString = [islamicFormatter stringFromDate:islamicDate];
NSLog(@"%@",islamicDateString);

I hope it's clear for you guys.


Solution

  • I think this would help

    NSCalendar * hijri = [[NSCalendar alloc] initWithCalendarIdentifier:NSIslamicCalendar];
    
    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterLongStyle];
    [formatter setTimeStyle:NSDateFormatterNoStyle];
    [formatter setCalendar:hijri];
    
    NSLog(@"hijri: %@", [formatter stringFromDate:[NSDate date]]);
    [formatter release];