2011-11-24 9 views
18

Sto usando dataformatter per ottenere giorni e ore nella mia applicazione. Ma sto affrontando un problema quando cambio la lingua del telefono dateformatter mi restituisce giorno e ora della lingua selezionata del telefono a causa della quale la mia app si arresta in modo anomalo visto che non supportiamo più lingue. Qualcuno può darmi una mano in questo.Nsdateformatter mi restituisce il giorno nella lingua del telefono selezionato. Può restituirmi solo l'inglese tutto il tempo?

Si prega di trovare il frammento di codice qui sotto:

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

quando ho selezionato la lingua del telefono come Gujrati (India) l'output che sto vedendo con il NSLog usando questo è il seguente,

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

potrebbe essere questa la stessa domanda [come questo] (http://stackoverflow.com/questions/1348590/how-to-make-nsdateformatter-display-locale-specific -Data) ??? –

+0

@breakfreehg: Si prega di guardare la mia risposta. Funziona per me e funzionerà per te. :] –

risposta

45

Aggiungere le seguenti righe al dataformatter.

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

Nel tuo caso,

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

Allo stesso modo per tutti i dateformatters.

1

Prova con questo codice:

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

Spero che questo ti aiuta.

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)