Pregunta

Tengo un problema con NSDateFormatter y iOS.De hecho, encontré un reconocimiento Y una explicación del problema aquí:

http://www.cocoanetics.com/2011/12/ios-5-breaking-nsdateformatter/

Sin embargo, mi cerebro no es capaz de procesar esta información para traducir que todos a una solución para mi situación particular.Espero que los chicos de 'n chicas puede ayudarme a salir de aquí:

Podría alguien decirme cómo hacer el siguiente trabajo en iOS5?Solía estar funcionando bien:

NSLocale *myLocale = [[NSLocale alloc] initWithLocaleIdentifier:@”en_GB”];
[inputFormatter setLocale: myLocale];
[myLocale release];
[inputFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
NSDate *formattedDate = [inputFormatter dateFromString: feedDateString];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"EEEE d MMMM"];

La cadena de entrada, que está más allá de mi control, sería algo así como "Tue, 03 Jan 2012 00:00:00 +0100" Cuando me registro [outputFormatter stringFromDate:formattedDate] me pongo null

El original de la configuración Regional fue "es_es", pero he cambiado que en la esperanza de que eso iba a ayudar.

También sería ayudar a la gente en este post, que parece ser un callejón sin post:

NSDateFormatter en ios 5 - cualquier otra forma de uso?

¿Fue útil?

Solución 2

Para todos ustedes, después de haber pasado el tiempo del cerebro en esto: todo fue mi estúpida culpa: la cadena de entrada que debía formatearse no era "lunes, 13 de febrero de 2012 00:00:00 +0100" pero en realidad era "lun, lunes, 13 de febrero de 2012 00:00:00 +0100 "¿Ves? Bueno, no vi los espacios blancos finales durante NSLOGGing. [Ironía: ¡los muchos espacios y el regreso después de la cadena tampoco se muestran aquí!

Y de alguna manera, a IOS 4 no le importaba. iOS5 es mucho más quisquilloso y probablemente con razón. Entonces resolví la cosa de la siguiente manera:

NSString *trimmedString = [inputstring stringByTrimmingCharactersInSet:
                               [NSCharacterSet whitespaceAndNewlineCharacterSet]];

Espero que esto pueda ser de ayuda para ti también.

Otros consejos

Prueba esto:

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
        
NSString *str = [outputFormatter stringFromDate:[NSDate date]];
/* 
   Do something with this string
*/
[outputFormatter release];

También puede agregar región agregando setlocale Parámetro a NSDateFormatter.

NSLocale *myLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"];
[outputFormatter setLocale: myLocale];
        
NSString *str = [outputFormatter stringFromDate:[NSDate date]];

/* 
   Do something with this string
*/

[outputFormatter release];
[myLocale release];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top