2011-05-09 12 views
10

Me estoy volviendo loco con, probablemente, un problema estúpido.NSDateformatter setDateFormat según currentLocale

Tengo 3 cuerdas: año, mes y día. Es necesario disponer de una fecha en el formato correcto basado en currentLocale, por lo que es decir, si currentLocale LocaleIdentifier es en_US mi dateFormat debe ser: MMM/dd/aaaa

si es fr_FR la dateFormat debe ser dd/MMM/aaaa

No creo que la única manera de hacerlo sea obtener currentLocale localeIdentifier y comenzar con un montón de si entonces.

Gracias de antemano.

Max

Respuesta

7

Mira NSDateComponents para crear un NSDate, a continuación, utilizar NSDateFormatter formatearlo. NSDateFormatter usa la configuración regional actual para formatear las fechas, según el estilo de formato (por ejemplo,
NSDateFormatterMediumStyle).

+0

Muchas gracias. NSDateComponents ayudó. – masgar

34

Si entiendo su pregunta, quiere establecer su NSDateFormatter en la configuración regional del dispositivo del usuario. Para que usted puede hacer algo como esto:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
[dateFormatter setLocale:[NSLocale currentLocale]]; 
NSDate *date = [NSDate date]; 
NSString *dateString = [dateFormatter stringFromDate:date]; 
+0

¡Perfecto! Gracias. – Septronic

2
-(NSString *) stringFromDate:(NSDate *) date{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

    [dateFormatter setLocale:[NSLocale currentLocale]]; 

    NSString *dateString = [dateFormatter stringFromDate:date]; 

    [dateFormatter release]; 

    return dateString; 
} 

-(NSDate *) dateFromString:(NSString *) dateInString{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

    [dateFormatter setLocale:[NSLocale currentLocale]]; 

    NSDate *dateFromString = [dateFormatter dateFromString:dateInString]; 

    [dateFormatter release]; 

    return dateFromString; 
} 

espero que esto ayude.

3

En Swift 3:

let formatter = DateFormatter() 
formatter.dateStyle = .medium 
formatter.timeStyle = .none 
formatter.locale = Locale.current 
let date = Date() 
let dateString = formatter.string(from: date) 
print(dateString) 
+0

NSLocale.currentLocale() ya no funciona –

Cuestiones relacionadas