name month from datecomponents current ios date nsdate nsdateformatter monthcalendar

ios - month - NSDateFormatter "Mes" en 3 letras en lugar de la palabra completa



swift date (6)

¿Has probado: [formatter setDateFormat:@"dd-MMM-YYYY HH:mm"]; y luego [formatter stringFromDate:someNSDate];

NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"dd-MM-YYYY HH:mm"]; [formatter setTimeZone:[NSTimeZone systemTimeZone]];

Si elijo "MM", obtengo el mes en número: "09-05-2012 15:33" Si elijo "MMMM", obtengo el mes en palabra: "09-May-2012 15:33"

Lo que quería, era el mes en abreviatura de 3 letras.
Por ejemplo: "enero" sería "enero"

En este caso, mayo es correcto porque solo tiene 3 letras.


En SWIFT

let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd MMM yyyy HH:mm" dateFormatter.stringFromDate(NSDate())


En realidad, puede configurar su dateStyle en medio (es decir, ''Jan'', ''Feb'', etc.) de esta manera:

[formatter setDateStyle:NSDateFormatterMediumStyle];


Esta es una solución simplificada que funciona con Swift 4 para producir una salida de 3 letras por mes:

let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd MMM YYYY, HH:mm:ss"

Y para verificar:

print(dateFormatter.string(from: Date())) // 20 Mar 2018, 23:41:40

Como se señaló anteriormente, MMM es la sintaxis correcta para obtener el resultado del mes deseado.


Si obtiene las dos cosas en el orden incorrecto, no obtiene la salida esperada.

[formatter setDateFormat:@"MMM"]; [formatter setDateStyle:NSDateFormatterMediumStyle];

NO da los mismos resultados que:

[formatter setDateStyle:NSDateFormatterMediumStyle]; [formatter setDateFormat:@"MMM"];

(El segundo de estos dos fragmentos está ahora felizmente entregando Sep Oct, etc. en mi aplicación)


para swift 4 ir con:

if let dateFormatter = DateFormatter(){ dateFormatter.dateStyle = .medium // eventually: //let locale = Locale(identifier: ... //dateFormatter!.locale = locale dateFormatter.dateStyle = .medium dateFormatter!.dateFormat = "dd MMM YYYY, HH:mm:ss" } else.. ..