Преобразование NSString в фрагменты NSString, имеющие формат даты.

StackOverflow https://stackoverflow.com/questions/2274051

Вопрос

Это может быть просто.Я искал, пока не нашел.

Как преобразовать 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").

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top