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.

Foi útil?

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 formatterO 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").

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top