Question

Cela peut être simple. J'ai cherché, pas encore trouvé.

Comment puis-je convertir le NSString @ "20100216190205" à un NSString format @ "aaaa-MM-JJ HH: mm: ss".

à savoir: @ "2010-02-16 19:02:05"

EDIT: Je voulais éviter d'utiliser le NSDateFormatter être plus générique, pour d'autres situations.

Était-ce utile?

La solution

Purement comme un exercice dans le code d'écriture:

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);

Mais je suis d'accord. Aller facile sur vous-même, et d'utiliser une date formatter pour cette

Autres conseils

Vous pouvez extraire chaque sous-chaîne, les convertir en nombres entiers (-intValue), puis utilisez NSDateComponents pour les convertir en une date. Et il est beaucoup plus difficile que d'utiliser NSDateFormatter.

Dans votre cas, le format du NSDateFormatter doit être mis à yyyyMMddHHmmss avant d'appeler -dateFromString:, i.e..

[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSDate *date = [formatter dateFromString:@"20100216190205"];
....

Vous devez définir le format de votre formatter YYYYMMDDHHMMSS pour analyser la chaîne que vous avez dans votre exemple. Vous devrez créer un nouveau ou modifier le formatter format de formatter d'origine pour intégrer une plus attrayant visuellement que vous voulez (de @"yyyy-MM-dd HH:mm:ss").

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top