2015-09-27 5 views
0

Вот JSON значение строки я получаю нужно преобразовать в NSDate:Преобразование JSON строки в NSDate происходит ошибка

2017-04-08T13: 51: 00,000 + 03: 00

И вот я конвертировать в NSDate:

+ (NSDate *)stringDateToDate:(NSString *)aStringDate 
{ 
    NSDate *date = nil; 

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss:SSS"]; 

    date = [dateFormat dateFromString:aStringDate]; 
    NSLog(@"nsdate: %@", date); 

    return date; 
} 

в результате он записывает:

nsdate: (null)

Похоже, что формат даты неверен. Как исправить эту проблему?

ответ

2

Используйте следующую дату форматера Строка

"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ" 

который использует ZZZZZ для временной зоны/зоны/время смещения - например, +03: 00
SSS для дробных секунд - например, 123
и самое главное использует . между секундами и его фракциями вместо :

Благодаря rmaddy для коррекции количества S и Z для точного соответствия нужного входа

Обратите внимание, что вы можете уйти с использованием SZ вместо SSSZZZZZ, потому что парсер достаточно умен, чтобы разбирать его в любом случае. Если вы хотите создать строку с даты, вам понадобится строка форматирования даты.

"yyyy-MM-dd'T'HH:mm:ss.SZ" 

enter image description here

Более подробную информацию о строках средства форматирования даты можно найти в разделе юникода для
Date Format Patterns

+0

спасибо за ответ. Сейчас он работает – Sergio

+0

@ Серхио приветствуется! – luk2302

+0

@ luk2302 технически это временное смещение от UTC, а не часового пояса. –

-1

Z в конце временного сдвига

+ (NSDate *)stringDateToDate:(NSString *)aStringDate 
{ 
    NSDate *date = nil; 

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss:SSSZ"]; 

    date = [dateFormat dateFromString:aStringDate]; 
    NSLog(@"nsdate: %@", date); 

    return date; 
} 
+0

Downvoted из-за дополнительного пространства. Hmm –

+1

И все же это не сработает, потому что у вас есть: вместо. между секундами и его фракциями. – luk2302

+0

Да, это не видно. –

Смежные вопросы