Converter nsstring em pedaços de NSString que tem um formato de data
-
20-09-2019 - |
Pergunta
Isso pode ser simples. Eu procurei, ainda não encontrei.
Como converto o NSString @"20100216190205" em uma NSString de formato @"AAAA-MM-DD HH: MM: SS".
ou seja: @"2010-02-16 19:02:05"
EDITAR:Eu queria evitar o uso do nsdateFormatter para ser mais genérico, para outras situações.
Solução
Puramente como um exercício ao escrever 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);
Mas eu concordo: vá com calma e use um formatador de data para isso.
Outras dicas
Você pode extrair cada substring, convertê -los em números inteiros (-intValue
), então use NSDateComponents
para convertê -los em uma data. E é muito mais problemático do que usar o nsdateFormatter.
No seu caso, o formato do nsdateformatter precisa ser definido como yyyyMMddHHmmss
antes de ligar -dateFromString:
, ou seja
[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSDate *date = [formatter dateFromString:@"20100216190205"];
....
Você precisará definir seu formatter
O formato para yyyymmddhhmms para analisar a string que você tem no seu exemplo. Você precisará criar um novo formatador ou modificar o formato do formatador original para incorporar o mais atraente visualmente que você deseja (@"yyyy-MM-dd HH:mm:ss"
).