1

私は日付を与えられます:

2012-10-11T23:14:00-04:00

NSDateFormatterでこの形式を使用して解析しています。

yyyy-MM-dd'T'HH:mm:ss-ZZ

しかし、それはnilを返します

4

1 に答える 1

1

日付の形式が間違っています。変換する文字列にコロンが含まれている場合は、フォーマット文字列に 5 つのZ文字を入れる必要があり ます。これが正しい使い方です。また、日付 + または - GMT (少なくとも /format/ について話している場合) のみを持つことが保証されていないため、フォーマットの一部として +/- を含めないでください。

したがって、正しいフォーマット文字列は次のようになりますyyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ"];
NSDate* date = [formatter dateFromString:@"2012-10-11T23:14:00-04:00"];
NSLog(@"Date: %@", date); // This correctly logs Date: 2012-10-12 03:14:00 +0000

Z文字を 2 つだけ使用するのが RFC 822 形式であり、日付文字列は次のようにする必要があります: 2012-10-11T23:14:00-0400(つまり、タイム ゾーン オフセットに時間/分の区切り記号がない)。サンプル文字列のタイムゾーンは ISO-8601 です。詳細については、http: //www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patternsを参照してください。

于 2012-10-13T07:13:57.303 に答える