2009-11-26 10 views
5

Estoy usando NSDateFormatter, el problema es su consistencia. Si uso el kCFDateFormatterMediumStyle, el formato es "26 de noviembre de 2009" en el simulador, pero en el dispositivo aparece "26-Nov-2009".¿NSDateFormatter ofrece diferentes valores en el dispositivo y el simulador? ¿Qué es el trabajo?

Ahora tengo la pregunta: ¿Es esto NSFormatter confiable significa en un futuro próximo o actualizaciones de apple puede cambiar el estilo de nuevo?

+0

El resumen de las respuestas es establezca la el formato de fecha de NSDateFormatter no es el estilo de fecha para la coherencia –

Respuesta

3

NSDateFormatter formatea la fecha a la preferencia del usuario, de acuerdo con la configuración internacional en el dispositivo. Como tal, nunca se puede esperar que esta cadena sea consistente debido a la cantidad de formas diferentes en que se muestran las fechas en todo el mundo.

He encontrado la mejor manera de formatear una fecha como una cadena (para usar para dar a los servidores web, etc.) es usar NSDateComponents y convertirlos en cadenas.

+3

Esto no es 100% correcto. NSDateFormatter formatea según las preferencias del usuario, sí, pero solo cuando se especifican configuraciones como kCFDateFormatterMediumStyle. Si lo desea, puede configurar fácilmente una cadena de formato exacta. –

17

Si bien la otra respuesta mencionada anteriormente es técnicamente correcta, no le brinda la solución que está buscando. Mientras que los valores por defecto NSDateFormatter a la utilización de lugares de usuario (y es, como tal, no va a dar resultados útiles) puede solicitar una configuración regional específica para obtener resultados consistentes:

NSDateFormatter *frm = [[NSDateFormatter alloc] init]; 
[frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 

NSLocale *en_US = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[frm setLocale:en_US]; 
[en_US release]; 
Cuestiones relacionadas