7

iOS 4以降とOSX 10.6以降の両方で、CocoaでISO8601の日付を解析したいと思います

これについては StackOverflow ですでにいくつかの質問がありますが、私の意見では、どれも良い答えを含んでいません。これが私が良い答えを構成すると思うものです:

  1. 答えは、ISO8601 をサポートするコードを指す必要があります。このコードは、iOS 4 以降と OSX 10.6 以降の両方で、XCode 4 の下で問題なくコンパイルされるはずです。

  2. コードは、可能なすべてのISO8601 日付形式をサポートする必要があります。

    ここには非常に多くの可能性があることに注意してください。1 つまたは 2 つの書式文字列で答えるだけでNSDateFormatterは、うまくいきません。

  3. 答えはこのライブラリであってはなりません。これは、危険な 32 ビットの前提がたくさんあり、必要以上に複雑であり、XCode4/Clang でクリーンにコンパイルされないためです。結論:私はそれをまったく信用していません!

ありがとう、仲間のカカオアイツ。ここに本当の答えがあるかどうかを知ることに興奮しています!

4

1 に答える 1

6

最良の方法はこのライブラリです。☺</p>

そのページに、新しいソースコード(32ビットとClangの修正を含む)を含み、問題追跡システムを備えたBitbucketリポジトリへのリンクを追加する必要があります。他にバグを見つけた場合は、ファイルしてください。

また、「必要以上に複雑」とはどういう意味か知りたいです。通常の使用法は非常に簡単です。

ISO8601DateFormatter *formatter = [[[ISO8601DateFormatter alloc] init] autorelease]; //Or, if you prefer, create it once in -init and own it until -dealloc 
NSDate *parsedDate = [formatter dateFromString:inString];
NSString *unparsedString = [formatter stringFromDate:inDate];

より多くの情報が必要な場合(たとえば、タイムゾーンを保持するため)、切り替えるか、より長い方法の1つにdateFromString:切り替えることができます。stringFromDate:

もしあなたが何か他のことを意味しているのなら、私はそれを聞きたいので、私は図書館を改善することができます。

于 2011-06-01T00:57:35.280 に答える