Convertir NSString à NSString de Chunks qui a un format de date
-
20-09-2019 - |
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.
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"
).