0

NSDate に変換したい UTC の文字列があります。どういうわけか私は30分のエラーを取得しています

文字列は 2012-04-10T00:00:00+05:30 です

変換された日付は 2012-04-09 19:00:00 +0000です

2012-04-09 18:30:00 +0000である必要があります

この関数を使用して文字列を日付に変換します

- (NSDate *)parseRFC3339Date{
    NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
    [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];

    NSDate *theDate = nil;
    NSError *error = nil; 
    if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:self range:nil error:&error]) {
        NSLog(@"Date '%@' could not be parsed: %@", self, error);
    }

    [rfc3339TimestampFormatterWithTimeZone release];
    return theDate;
}
4

2 に答える 2

2

文字列全体をカバーする を作成し、NSRangeそのアドレスを に渡した-getObjectValue:forString:range:error:場合、出力ではそれが短いことがわかります。フォーマット文字列の 'Z' は "-0800" (コロンなし) のようなものにのみ一致するため、解析はコロンで停止しました。4 つの Z、'ZZZZ' を指定する場合、"GMT-08:00" のようなものに一致します。コロンを使用できますが、「GMT」が必要です。日付文字列の形式が確かな場合は、「GMT」を挿入してみてください。

于 2012-04-13T07:33:50.950 に答える
0

ここでISOdateFormatterに遭遇しましたhttp://boredzo.org/iso8601unparser/これは完全に機能します。受信する日付文字列を変更するよりも資金を提供してください。

于 2012-04-13T08:27:56.183 に答える