2011-11-24 7 views
18

Używam dateformatter, aby uzyskać dni i czas w mojej aplikacji. Ale mam do czynienia z problemem, kiedy zmieniam język telefonu dateformatter zwraca mi dzień i godzinę wybranego języka telefonu, dzięki czemu moja aplikacja ulega awarii, ponieważ nie obsługujemy wielu języków. Czy ktoś może mi pomóc w tym.Nsdateformatter zwraca mi dzień w języku wybranego telefonu.Czy powracam tylko cały angielski?

Proszę znaleźć poniżej fragment kodu:

NSDate *date=[NSDate date]; 
NSDateFormatter *objTimeFotmatter=[[NSDateFormatter alloc]init]; 
[objTimeFotmatter setDateFormat:@"HH:mm"]; 

NSDateFormatter *objDayFotmatter=[[NSDateFormatter alloc]init]; 
[objDayFotmatter setDateFormat:@"EEEE"]; 

NSString *objTime=[objTimeFotmatter stringFromDate:date]; 
NSString *objDay=[objDayFotmatter stringFromDate:date]; 

NSLog(@"objTime=%@",objTime); 
NSLog(@"objDay=%@",objDay); 

Kiedy wybrany język telefonu jako Gujrati (Indie) na wyjściu, które widzę za pomocą NSLog używając tego jest następujący,

2011-11-24 11:23:20.221 Belkin_Plugin[1110:707] objTime=૧૧:૨૩ 
2011-11-24 11:23:20.227 Belkin_Plugin[1110:707] objDay=ગુરુવાર 
+0

to może być takie samo jak to pytanie [jednego] (http://stackoverflow.com/questions/1348590/how-to-make-nsdateformatter-display-locale-specific -date) ??? –

+0

@breakfreehg: Proszę spojrzeć na moją odpowiedź. Działa dla mnie i będzie działać dla ciebie. :] –

Odpowiedz

45

Dodaj następujące wiersze do formatu daty.

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[dateFormatter setLocale:usLocale]; 

W twoim przypadku,

NSDateFormatter *objTimeFotmatter=[[NSDateFormatter alloc]init]; 
[objTimeFotmatter setDateFormat:@"HH:mm"]; 
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[objTimeFotmatter setLocale:usLocale]; 

Podobnie dla wszystkich dateformatters.

1

Spróbuj z tym kodem:

NSDate *date=[NSDate date]; 
NSDateFormatter *objTimeFotmatter=[[NSDateFormatter alloc]init]; 
[objTimeFotmatter setDateFormat:@"HH:mm"]; 
[objTimeFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] 
autorelease]]; 
NSDateFormatter *objDayFotmatter=[[NSDateFormatter alloc]init]; 
[objDayFotmatter setDateFormat:@"EEEE"]; 
[objDayFotmatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] 
autorelease]]; 
NSString *objTime=[objTimeFotmatter stringFromDate:date]; 
NSString *objDay=[objDayFotmatter stringFromDate:date]; 
[objDayFotmatter release]; 
[objTimeFormatter release]; 

NSLog(@"objTime=%@",objTime); 
NSLog(@"objDay=%@",objDay); 

Nadzieja to pomaga.

1

Swift

let dateFormatter = DateFormatter() 
dateFormatter.locale = NSLocale(localeIdentifier: "en_US") as Locale! 
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss" 
let resultsDate = dateFormatter.string(from: date) 
Powiązane problemy