Objective-C で iPhone アプリを作成すると、NSDate
オブジェクトに解析する必要がある文字列形式 (UTC 形式で、末尾にゼロ UTC オフセットまたはズールー時間を示す Z が付いている) の日付があります。
ちょっとしたコード:
NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
NSString* str = @"2009-08-11T06:00:00.000Z";
NSDate* date = [df dateFromString:str];
これをデバッガーで実行すると、最終的にdate
はnil
! 私はそれが私の日付フォーマット文字列と関係があると仮定しています。日付文字列を正しく解析するにはどうすればよいですか?
考えられるのは
Z
、日付形式をリテラルにして、日付形式を に設定することyyyy-MM-dd'T'HH:mm:ss.SSS'Z'
です。Z がリテラルとして解析され、日付がオフセット情報を失い、あいまいになり、現地時間と解釈される場合を除いて、これはうまくいきます。
たとえば、解析する文字列が 2009-08-11T06:00:00.000Z (ズールー時間の 6:00) の場合、現地時間の 6:00 と解釈され、正しくないオフセットが適用されます。次に、ユーザーのオフセットに応じたオフセットで 2009-08-11T06:00:00.000-600 (ズールー時間の 12:00) として解析されます。
ありがとう!