He configurado la configuration regional y la zona horaria, pero cuando formateo la date, siempre obtengo una date no válida. El mes es siempre diciembre y el año es uno less que el año especificado. En mi caso, no necesito el componente del día.
Revisé otra publicación similar pero no resolvió el problema.
Cualquier ayuda es apreciada. Gracias.
Aquí está el código:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]; dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; [dateFormatter setDateFormat:@"MMM YYYY"]; NSDate *formattedDate = [dateFormatter dateFromString:@"Sep 2013"]; NSLog(@"Date: %@", [dateFormatter stringFromDate:formattedDate]); [dateFormatter release]; dateFormatter = nil;
SALIDA: Fecha: Dic 2012
El formatting "YYYY" se utiliza para los calendars basados en la "Semana del año". Utilice el especificador de formatting "yyyy" en su lugar:
[dateFormatter setDateFormat:@"MMM yyyy"];
Solo quería agregar algo a la gran respuesta de Vladimir. Si haces esto antes de configurar tu localidad, parece que el formatting de la date se vuelve loco. Lo que tenía que hacer era establecer la configuration regional antes de configurar el nuevo formatting y luego usar setDateFormat
para cambiar el formatting según la configuration regional utilizada. Así algo así:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setLocale:[NSLocale currentLocale]];//I wanted to set the locale to wherever user is using my app in [formatter setDateFormat:@"MMM YYYY"]; NSDate *now = [NSDate Date]; NSString *fancyLookingDate = [formatter stringFromDate:now];