añadir esta línea:
NSDateFormatter *parser = [[NSDateFormatter alloc] init];
[parser setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
y funcionará. De manera predeterminada, NSDateFormatter
usa la configuración regional actual del sistema, que puede variar según las preferencias del usuario actual. La cadena de fecha anterior (@"Tue, 23 Nov 2010 16:14:14 +0000"
) contiene palabras en inglés ("Tue", "Sep") que el formateador de fecha podría no reconocer si la configuración regional se configurara en cualquier otra cosa que no fuera inglés.
Además, los usuarios de culturas no occidentales pueden usar configuraciones regionales que usan un calendario diferente al calendario gregoriano que se usa en el mundo occidental. Si no estableció explícitamente la configuración regional, el formateador de fecha podría analizar la fecha, pero el NSDate
resultante representaría un punto entero en el tiempo.
El identificador de configuración regional @"en_US_POSIX"
está destinado a este fin. Se garantiza que no cambiará aunque la configuración regional @ "en_US" cambie algún día su configuración predeterminada.
¿En qué configuración regional está configurado su dispositivo/simulador? Esto solo funcionará si la configuración regional está configurada en inglés. –
Mi configuración regional es francesa ... No pensé en eso, lástima de mí :) ¿Hay alguna manera de hacer que este código sea compatible con la mayoría de las configuraciones regionales actuales sin cambiar la fecha inicial? – Harkonnen
Puede decirle a NSDateFormatter que use una configuración regional específica para el análisis (por ejemplo, en_US_POSIX). Consulte [Apple QA1480] (http://developer.apple.com/library/ios/#qa/qa2010/qa1480.html). – Anna