Я получаю строку "2011-09-24T00:30:00.000-07:00" от веб-сервиса. Я не знаю, что это за формат, и хочу преобразовать объект даты в target-c.
Итак, любой знает, как преобразовать эту строку в дату.
Большое Вам спасибо
Я получаю строку "2011-09-24T00:30:00.000-07:00" от веб-сервиса. Я не знаю, что это за формат, и хочу преобразовать объект даты в target-c.
Итак, любой знает, как преобразовать эту строку в дату.
Большое Вам спасибо
Существует небольшая проблема с получением даты/времени из этого формата, ':' в часовом поясе, которую необходимо удалить, Apple не обрабатывает этот случай, и это не правильный формат UTS. Вот пример:
NSString *dateString = @"2011-09-24T00:30:00.000-07:00";
dateString = [dateString stringByReplacingOccurrencesOfString:@":" withString:@"" options:0 range:NSMakeRange(dateString.length-3, 1)];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
NSDate *date = [formatter dateFromString:dateString];
NSLog(@"date: %@", date);
Выход NSLog: date: 2011-09-24 07:30:00 +0000
В качестве теста, отображающего только что созданную дату:
NSString *testDateString = [formatter stringFromDate:date];
NSLog(@"date: %@", testDateString);
Выход NSLog: date: 2011-09-24T03:30:00.100-0400
Обратите внимание, что время и часовой пояс были преобразованы в мой местный часовой пояс с помощью NSLog, принимая во внимание оба изменения, учитывая, что дата и время такие же, как и в оригинале.
Строковый формат, обычно используемый веб-службами для представления даты/времени, — RFC 3339.
Его нельзя тривиально преобразовать в NSDate и из него, поскольку он может включать в себя различную информацию, которую нельзя представить только с помощью NSDate (например, смещение времени от UTC и дату без указания времени).
Существуют классы, которые сопоставляют строки RFC 3339 с собственными типами Cocoa, например это. Возможно, вы сможете обойтись более простым преобразованием, которое использует ярлыки, но для надежного кода используйте класс, написанный специально для обработки представления.