2011-10-28 16 views
16

可能な重複日付を解析することはできません理由:私はバックエンドとしてレールを使用
Converting an ISO 8601 timestamp into an NSDate: How does one deal with the UTC time offset?NSDateFormatterは、ISO 8601形式から

を、デフォルトの日付出力は2008-12-29T00です:27: 42から08:00

しかし、私は2008-12-29T00に出日付を変更する以外、私の研究の後NSDateFormatterは、それをサポートすることはできません:27:42から0800

ここ

は、私はISO 8601の日付を解析するために使用されるコードであるが、それは

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 
NSLog(@"%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42-08:00"]); 

任意のアイデアを動作しないのですか?

+0

それは、このリンクを知っている@Ryan、私はよりよい解決策を取得したいです。 – allenwei

+0

あなたはこれに対する解決策を見つけましたか?私は "2008年12月29日:27:42 - 08:00"としてフォーマットされた日付のNSDateまたはNSStringを提供できるソリューションを探しています。受け入れられた答えは私のために働いていません。問題のある部分はタイムゾーン、すなわち「-08:00」である。 – Mustafa

答えて

48

問題は終わりにタイムゾーンです。時間と分の間には独立した00か-0X00として:GMT-0X:

あなたはとしてそれを持っているのいずれかが必要です。

次の二つの組み合わせが機能:

コンボ1 - GMT形式(GMT-0X:00)を使用し、ZZZZ

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"]; 
NSLog(@"DATE FORMAT:%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42GMT-08:00"]); 

コンボ2 - RFC 822形式(-0X00)を使用し、ZZZ

dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; 
NSLog(@"DATE FORMAT:%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42-0800"]); 
+1

http://www.w3.org/TR/NOTE-datetimeによると2008-12-29T00:27:42-08:00は有効な日付形式です。私はRailsのバックエンドからデフォルトのフォーマットを変更できますが、それは良い解決策ではないと思います。 – allenwei

+0

私は第二の溶液を試してみましたが、時間帯と間違ってなめらかあり:「日付形式:2008-12-29午前8時27分42秒0000で」。 27:42Z 、これは私の場合も、I ISO8601 http://en.wikipedia.org/wiki/ISO_8601 – JastinBall

+1

になって :そのような何か受信した "2015-05-07T16:16:47.054403Z" を私は使用していた: 「YYYY ' - ' MM ' - ' dd'T'HH ':' MM ':' ss.SSSZ " – AmineG

関連する問題