Convertir NSString a Trozos de NSString que cuenta con un formato de fecha
-
20-09-2019 - |
Pregunta
Esto puede ser muy sencilla. He buscado y no encontrado todavía.
¿Cómo se convierte el NSString @ "20100216190205" a un formato de NSString @ "aaaa-MM-dd hh: mm: ss".
es decir: @ "2010-02-16 19:02:05"
EDIT: Quería evitar el uso de la NSDateFormatter a ser más genérico, para otras situaciones.
Solución
A título meramente un ejercicio de escritura de código:
NSString* digits = @"20100216190205"; // this is probably a parameter somewhere
NSMutableString* formatted = [digits mutableCopy];
[formatted insertString:@":" atIndex:12];
[formatted insertString:@":" atIndex:10];
[formatted insertString:@" " atIndex:8];
[formatted insertString:@"-" atIndex:6];
[formatted insertString:@"-" atIndex:4];
NSLog(@"original string: %@ -> formatted: %@", digits, formatted);
Pero estoy de acuerdo:. Ir fácil en usted mismo y utilizar un formateador fecha para este
Otros consejos
Puede extraer cada subcadena, convertirlos en números enteros (-intValue
), a continuación, utilizar NSDateComponents
para convertirlos en una fecha. Y es mucho más problemático que el uso de NSDateFormatter.
En su caso, el formato de la NSDateFormatter necesita ser ajustado en yyyyMMddHHmmss
antes de llamar -dateFromString:
, es decir.
[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSDate *date = [formatter dateFromString:@"20100216190205"];
....
Se tendrá que establecer el formato de la formatter
a aaaaMMddHHmmss analizar la cadena que tiene en su ejemplo. Tendrá que crear un nuevo formateador o modificar el formato del formateador originales para incorporar el más atractivo a la vista que desee (@"yyyy-MM-dd HH:mm:ss"
).