2012-08-24 13 views
22

No estoy seguro de cuál es el problema, pero en lugar de obtener el nombre de un mes "Julio", obtengo "07".NSDateFormatter no muestra el nombre del mes completo, solo el número de un solo dígito

dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setLocale:[NSLocale systemLocale]]; 
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];  
[dateFormat setDateFormat:@"MMMM dd, h:mm a"]; 

He tratado M, MM, MMM, MMMM, y todos ellos me dan un número, en lugar del nombre del mes, aunque con diferentes cantidades de 0s principales.

+0

Creo que esta línea es el problema .. [dateFormat setLocale: [NSLocale systemLocale]]; no sé cuál es tu propósito para usar 'systemLocale' pero puedes probar' currentLocale' en lugar de 'systemLocale' – ila

Respuesta

45

Resulta ser un problema con la segunda línea, setLocale. Supongo que el sistema no utilizará los nombres de los meses de inglés cuando el locale se haya configurado manualmente. Vivo en un inglés que habla locale, pero tal vez no importe.

En cualquier caso, al no establecer la configuración regional soluciona el problema del nombre del mes.

dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];  
[dateFormat setDateFormat:@"MMMM dd, h:mm a"]; 
7

-systemLocale no es lo que quiere aquí. Devuelve una configuración regional alternativa si no hay otra configuración regional. Use -currentLocale para obtener la configuración regional actual del usuario.

también:
que puedes usar NSDateFormatter 's +dateFormatFromTemplate:options:locale: método para obtener el formato de fecha correcta. En algunos idiomas, el día viene antes del mes, etc. y viceversa.

Cuestiones relacionadas