質問

私のプロジェクトで私は得ています 「2008-02-01T10:03:23.793-06:00」 この文字列の日付形式は、私が使用しているNSDateに変換する必要があります

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 

NSDate* dateFromString = [dateFormatter dateFromString:@"2008-02-01T10:03:23.793-06:00"];

しかし、NSLogを使用して日付値を印刷すると、値がnullとして取得されます。

私を助けてください

ありがとう

役に立ちましたか?

解決

タイムゾーンが準拠していないため、NSDateFormatter は解析できません。 RFC 822 または GMT 標準. 。問題は最後の「:」にあり、これを使用するには「GMT」が必要です。

あなたが尊重する日付は、 RFC 3339.

これを解析するには NSFormatter を使用する必要があります。使用する必要があります getObjectValue:forString:errorDescription:

文字列を設定します @"yyyy-MM-dd'T'HH:mm:ss.SSSZ".

他のヒント

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
[formatter setLenient:YES];
NSString* buggeredTime = [[sourceDate substringToIndex:26] stringByAppendingString:[sourceDate substringFromIndex:27]];
NSDate* dueDate = [formatter dateFromString:buggeredTime];
[formatter setDateFormat:@"'Time Due: 'hh:mm a  MM/dd/yy"];
NSString* dateString = [formatter stringFromDate:dueDate];
[formatter release];

(知らんぶっきらぼうsetLenientが必要な場合。)

だけが使用代わりに、(代わりに "Z" の "ZZZ" を注意してください)というます:

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];

私はあなたがあまりにもフォーマッタのロケールを設定する必要があると思います。顔をしているここ

GoogleのGDataのObjective-Cのクライアントは、RFC 3339の日付を解析できるクラス(GDataDateTime)を持っています。

ます。http:// code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/Elements/GDataDateTime.mする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top