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..
..