Преобразование NSString в фрагменты NSString, имеющие формат даты.
-
20-09-2019 - |
Вопрос
Это может быть просто.Я искал, пока не нашел.
Как преобразовать NSString @"20100216190205" в NSString формата @"гггг-ММ-дд ЧЧ:мм:сс".
то есть:@"2010-02-16 19:02:05"
РЕДАКТИРОВАТЬ:Я хотел избежать использования NSDateFormatter как более общего для других ситуаций.
Решение
Чисто как упражнение по написанию кода:
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);
Но я согласен:будьте осторожны с собой и используйте для этого средство форматирования даты.
Другие советы
Вы можете извлечь каждую подстроку, преобразовать их в целые числа (-intValue
), затем используйте NSDateComponents
чтобы преобразовать их в дату.И это гораздо более хлопотно, чем использовать NSDateFormatter.
В вашем случае формат NSDateFormatter должен быть установлен на yyyyMMddHHmmss
перед звонком -dateFromString:
, т.е.
[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSDate *date = [formatter dateFromString:@"20100216190205"];
....
Вам нужно будет установить formatter
формат yyyyMMddHHmmss для анализа строки, которая есть в вашем примере.Вам нужно будет либо создать новый форматтер, либо изменить формат исходного форматтера, чтобы включить более визуально привлекательный формат, который вы хотите (@"yyyy-MM-dd HH:mm:ss"
).