2010-04-11 19 views
9

Obtuve una cadena de análisis de un archivo XML que se ve así: vie, 09 de abril de 2010 00:00:45 +0200 y el patrón correspondiente debe ser este "EEE, dd MMM aaaa HH: mm: ss ZZ ", pero obtengo (nulo).iPhone SDK NSString A NSDate

Este es mi código:

NSString *dateString = @"Fri, 09 Apr 2010 00:00:45 +0200"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

NSDate *date = [dateFormatter dateFromString:dateString]; 
NSLog(@"date:%@",date); // result date:(null) 

Editar:

Esto funciona para mí, tuve que cambiar a es-locale:

NSLocale* usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]; 

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

[dateFormatter setLocale:usLocale]; 
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

NSDate *date = [dateFormatter dateFromString:dateString]; 
+0

¡no olvide lanzar su fechaFormater & usLocale! – Martin

+0

La razón para esto es que la configuración del dispositivo 12/24 es contraria a la configuración regional. Esto hace que Apple lo "ayude" cambiando el "HH: mm: ss" a "hh: mm: ssa". El uso de la configuración regional en-US desactiva esta "función". (Aunque en_US_POSIX es mejor) –

Respuesta

9

Su código que funcionó para mí cuando cambié esta línea:

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"]; 

a esta línea:

[dateFormatter setDateFormat:@"EEE',' dd MMM yyyy HH:mm:ss ZZ"]; 
+0

Extrañamente todavía me está dando un resultado nulo. iPhone SDK 3.1.2 – scud

+0

Funciona cuando la cadena es "Fr." en lugar de "Fri", lo que probablemente ocurre porque busca un formato de hora alemán. – scud

Cuestiones relacionadas