5

ISO 8601 日付/時刻仕様で読み取るこのコード ブロックがあります。問題は、何らかの理由で月が機能しないことです。変換するたびに月は「01」になります。私は何を間違っていますか?

NSDateFormatter *UTCDateFormat = [[NSDateFormatter alloc] init];
[UTCDateFormat setDateFormat:@"yyyy-MM-DD'T'HH:mm:ss'Z'"];
[UTCDateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[UTCDateFormat setCalendar:[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]];
[UTCDateFormat setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
NSLog(@"%@", [UTCDateFormat dateFromString:dateString]);

たとえば、dateString が次の場合:

@"2002-03-12T21:13:27Z" 

私の出力は次のようになります。

2002-01-12 21:13:27 +0000

私がすでに試したこと:

  • MMをLLに変更
  • setCalendar/setLocaleなしで試しました
  • - の周りで ' を試してみました
  • MMの位置を他の場所に切り替えました。それは決して何も変えません。
  • SO全体を調べたところ、他のすべての人に役立つようです。
4

1 に答える 1

18

これを試して

    [UTCDateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];

DD は「月の日」ではなく「年間通算日」です。NSDateFormatter 形式を検索するための優れたソースは、このテーブルです

于 2012-02-13T20:46:55.453 に答える