2016-07-29 5 views
0

NSDateオブジェクトをUTC時間文字列から取得しようとしています。時刻文字列の例は、このです:UTC形式の時刻文字列からNSDateを取得する

2016-07-29T11:43:55+02:00 

私はNSDateFormatterを使用してギを設定しています:しかし、これは私に間違ったタイムゾーンとテイクを与えるyyyy-MM-dd'T'HH:mm:ss

。上記の日付は次のとおりです:2016-07-29T09:43:55 + 00:00

どのようにタイムゾーンのアスペクトも維持しますか?

私は'Z'をフォーマッタの最後に追加しようとしましたが、それは無期限の日付を返します。

+0

これは間違いありません。 9は現地時間の2時間後です。 – Tander

+1

[ISO 8601からNSDateへの変換]の複製があります。(0120-998-100) – vadian

+0

日付形式が正しく、日付文字列が正しく解析されています。 GMTが受け取った日付文字列をどのようにオフセットしたのかをどのように検出するか尋ねる – Droppy

答えて

2

すべてのことの助けにこの

NSDateFormatter *userFormatter = [[NSDateFormatter alloc] init]; 
[userFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 
NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[userFormatter setLocale:posix]; 
NSString *dateConverted = [userFormatter stringFromDate:theDate]; 
+0

これは動作しません(フォーマッタに ''T' 'がありません)、その質問には答えません。 – Droppy

0

感謝を試してみてください。問題を解決しました。私のiOSシミュレータの時間は正しいです。しかし、私が[NSDate date];と呼んだときは、現地時間の2時間前に私にshow'dしました。したがって、NSDateの書式設定で「エラー」が表示されていました。

+0

どこにあなたを示しましたか? 'NSLog()'何か? – Droppy

+0

うん、NSLog。 iOSシミュレータが正しい時間を表示してもNSLogに表示されない理由はありますか?真に; – Tander

+0

;これはおそらくstackoverflowに関する一番よく尋ねられる質問で、iOS/OSXの開発者がそれについて知らない理由は何もありません。 'NSLog()'は '[NSDate description]'を呼び出し、 'description'はUTCタイムゾーンで日付をフォーマットします。別のタイムゾーンで日付を表示するには、 'NSDateFormatter'(タイムゾーンを含む)を設定し、それを使って日付 - >文字列変換を行います。 – Droppy

関連する問題