dateFromString возвращает ноль на iOS 4.2, отлично работает на 3.2! - PullRequest
1 голос
/ 14 января 2011

Я преобразую строку, возвращенную с сервера, в объект NSDate для дальнейшего использования.

Вот пример строки с сервера: 2011-01-14T16:05:48.555+05:00

А я пользуюсь [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];

Я могу успешно преобразовать его в объект NSDate, используя метод dataFromString на iOS 3.2 (устройство и сим оба).

Тем не менее, тот же код возвращает ноль на iOS 4.2 на устройстве и симе.

Я также пробовал много вариантов шаблонов формата даты, таких как:

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"];
[dateFormatter setDateFormat:@"YYY-MM-DD'T'HH:mm:ss.fffK"];

но ничего не работает !!

Я что-то здесь упускаю?

РЕДАКТИРОВАТЬ: я пытался жестко закодировать входную строку и после попытки много вариантов, следующая строка 2011-01-14T16:05:48.555+0500 работал с "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

Обратите внимание, что единственная разница в этой строке и в том, что от сервера; двоеточие (:) в значении TimeZone. Я попытался найти шаблон даты, где я могу упомянуть двоеточие в часовом поясе, но безуспешно.

Любая подсказка ??

1 Ответ

1 голос
/ 14 января 2011

Я не знаю правильного ответа на ваш вопрос, но вы можете попробовать это решение:

Вы можете вручную удалить двоеточие (:) в значении timeZone в строке, возвращаемой сервером, и записать эту строку вnew, а затем используйте «гггг-ММ-дд'ТХЧ: мм: сс.СССЗ».

Исходный код:

NSString *stringFromServer=@"2011-01-14T16:05:48.555+05:00";

NSString *str1 = [stringFromServer substringToIndex:26];

NSString *str2 = [stringFromServer substringFromIndex:27];

NSString *result=[NSString stringWithFormat:@"%@%@",str1,str2];

, поэтому, если это работает:

РЕДАКТИРОВАТЬ: я пытался жестко закодировать входную строку, и после попытки многих вариантов, следующая строка 2011-01-14T16: 05: 48.555 + 0500 работала с "гггг-ММ-дд'Т'ХХ: мм: ss.SSSZ "Blockquote

, тогда строка" result "будет работать с" yyyy-MM-dd'T'HH: mm: ss.SSSZ "

...