2011-01-14 13 views
1

私は、サーバから返された文字列をNSDateオブジェクトに変換して使用します。私は成功したのiOS 3.2(デバイスの両方シム&)にdataFromStringメソッドを使用してNSDateオブジェクトに変換することができる午前[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];dateFromStringはiOS 4.2でnilを返し、3.2で正常に動作します!

を使用し、2011-01-14T16:05:48.555+05:00

そして:ここ

は、サーバからのサンプル文字列です。

しかし、同じコードでは、デバイス上のiOS 4.2ではnilが返されます。両方ともsim です。

私はまたのような日付書式パターンの多くのバリエーション試してみました:

[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は、この文字列の唯一の違いと、サーバからの1であることを"yyyy-MM-dd'T'HH:mm:ss.SSSZ"

お知らせして働いていました。 TimeZone値のコロン(:)。私は成功していないタイムゾーンでコロンを言及できる日付パターンを見つけようとしました。

+1

参照http://stackoverflow.com/questions/4330137/parsing-rfc3339-dates-with-nsdateformatter-in-ios-4-x-and-macos-x-10-6-impossibl –

+0

言及いただきありがとうございました、それは助け! –

答えて

1

私は、あなたの質問に正しい答えを知っていませんが、このソリューションを試してください:

手動でサーバーから返された文字列にタイムゾーン値のコロン(:)を削除し、新しいにこの文字列を書き込むことができます「yyyy-MM-dd'T'HH:mm:ss.SSSZ」を使用します。そう

NSString *[email protected]"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:+ 0500 48.555が働い "YYYY-MM-dd'T'HH:MM:ss.SSSZ" BLOCKQUOTE

、文字列 "結果" は「YYYY-MM-dd'T」で動作しますHH:mm: ss.SSZ "

+0

これはmartinが彼のコメントに投稿したものに似ています。これまでのところ、私が見つけた唯一の実用的な解決策ですが、私はまだより良い解決策を探しています。 –

関連する問題