Я второй совет Мануэля Спулера о синтаксическом анализе вручную - не мой любимый вариант, но параметры Objective-C для этого слишком сложны (и не хватает отчетов об ошибках - что-то не так просто плюет nil
, без намека на ошибку) .
Одна вещь, которая сработала для меня, это использование C * strptime
, чтобы отделить дату, а затем реконструировать ее как NSDate
объект. Например, приведенный ниже код обрабатывает строку, полученную как что-то вроде «Monday, 28-Sep-09 18:13:50 UTC», и преобразует ее в объект NSDate, адаптирующий время UTC для местного времени:
struct tm time;
strptime([currentStringValue UTF8String], "%A, %d-%b-%y %H:%M:%S %z", &time);
NSDate* myDate = [NSDate dateWithString:
[NSString stringWithFormat:@"%04d-%02d-%02d %02d:%02d:%02d +0000",
time.tm_year+1900, time.tm_mon+1, time.tm_mday,
time.tm_hour, time.tm_min, time.tm_sec]
];
(может обрабатывать другие зоны, добавив другие параметры struct tm
вместо фиксированного часового пояса +0000, подробности см. В записи time.h в википедии ):