アップデート
iOS 7 の時点で、 NSDateFormatterは、この形式の文字列が提示されたときに実際に NSDate を作成します。
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZ""];
NSLog(@"non–nil date, even honoring the 7–minute–offset in the time–zone on iOS 7: %@",
[formatter dateFromString:@"2011-07-12T18:07:31+02:07"]);
iOS 6 の場合、答えは NSDateFormatter を使用しないことです…</p>
さて、ここまで読んできました
- ドキュメントと_
- Apple のテクニカルノート、
- Unicode リファレンスの重要な部分と
- かなりの数の質問と回答がここにあります
NSDateFormatter
文字列から文字列を作成するための使用方法についてNSDate
。
Peter Hosey のISO8601DateFormatterにも出くわしました。
彼の実装を調べてみると、次のように思います。
このような文字列を に取得するための正しくて正気な方法はありませんか?2011-07-12T18:07:31+02:00
NSDate
- 最後のコロンがなくても問題ありません。
GMT
「+」記号が前に付いていれば問題ありませんが...- そうではありません。
私のアプリケーションで動作するようにハックすることはできますが(フォーマットを使用) 、タイムゾーンの分単位の情報が破棄されるため@"yyyy'-'MM'-'dd'T'HH':'mm':'ssz':'00"
、もちろんそれは正しくありません。
最後のコロンを空の文字列に置き換えることもできますが、それもハックだと思います。
NSDateFormatter
それで、上からその文字列を取り、有効で正しいものを私に与えるための秘密のソースはありますNSDate
か?
余談:
+[NSDate dateWithNaturalLanguageString:]
私の目標を達成するために使用できるヒントをどこかで見つけました。ただし、これは日付を設定するだけで、時刻は設定しません! (まあ、それは時間を設定しますが、タイムゾーンオフセットのみを考慮し、HH:mm:ss 部分は考慮しません...)