2012-10-28 8 views
7

Próbuję wyświetlić nazwę islamskiego prądu day, month. Użyłem NSLocale, aby ustawić region na ar_SA, ale to tylko tłumaczenie nazw dni i miesięcy z angielskiego na arabski.Zmieniając gregoriańskie nazwy dni i dni na islamskie? NSDate

Wyjście Dostaję po arabsku:

١٢ الأحد ، اكتوبر ، ٢٠١٢ która w języku angielskim jest Sunday, October 28, 2012

wyjście chcę:

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); 

mam nadzieję to jasne, f albo wam.

+0

to data hebrajska i data arabska to samo? – pordi

+0

Proszę mi wybaczyć. Sprawdziłem różnicę i jest zupełnie inaczej. Sprawdź odpowiedź poniżej i daj mi znać, jeśli to pomoże. – pordi

+0

są całkowicie różne :) – Sobiaholic

Odpowiedz

9

myślę, że to pomogłoby

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]; 
+0

możesz sprawdzić szczegóły na http://stackoverflow.com/questions/4354337/hijri-islamic-calendar-problem – pordi

+0

Faktycznie sprawdziłem tę odpowiedź, zanim opublikowałem moje pytanie. Jednak ten kod wyświetli tylko datę numeryczną. Dd/mm/rrrr . Myślę, że kluczowym problemem jest "NSDateFormatter" szczególnie w 'setDateStyle'. – Sobiaholic

+0

Mam zaktualizowaną odpowiedź Sprawdź, czy to działa – pordi

1

Znam ten post jest dość stary, ale myślę, że jest to konieczne, aby dodać kod Swift 3 jak poniżej referencyjnych.

let hijri = Calendar(identifier: .islamic) 

let formatter = DateFormatter() 
formatter.calendar = hijri 
formatter.dateFormat = "d MMMM yyyy" 

let today = Date() 
let dateString = formatter.string(from: today) 

print(dateString) 

// the output: 16 Jamada II 1438