2012-04-12 17 views
2

NSDateフォーマッタを使用してFacebook Graph APIリクエスト(GMT)から日付を取得し、それをユーザのローカルタイムゾーンに変換しています。私は細かい日付で読むことができ、新しいタイムゾーンをうまく設定しますが、新しい日付をプリントアウトすると、夏時間を考慮していないようです。それは「木2012年1月12日10を出力し、この日付を印刷した場合、以下のNSDateFormatter夏時間

時間は、実際の要求から来るが、例えば、ここで私は、Facebookの応答

NSString *time = @"2012-04-12T15:25:09+0000" 
NSTimeZone *localZone = [NSTimeZone localTimeZone]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setTimeZone:localZone]; 
[formatter setDateFormat:@"yyyy-mm-dd'T'HH:mm:ssZZZZ"]; 
NSDate *date = [formatter dateFromString:time]; 
[formatter setDateFormat:@"eee MMM dd, yyyy hh:mm a"]; 
NSString *dateStr = [formatter stringFromDate:date]; 
NSLog(@"%@",dateStr); 

から標準時刻の文字列に入力します。 :25 AM "これは私がいる場所である" America/New_York "タイムゾーンでは間違っています。私は "Thu Jan 12、2012 11:25 AM"または1時間先になるはずです。昼間の節約の時間を強制する方法はありますか?前もって感謝します!

編集: 実際に月が間違って書式設定されていることに気付きました。それは何らかの理由で4月をとり、1月にしています。これはなぜでしょうか?

+0

私は月が間違っていることに気付きました。どうして? – MZimmerman6

答えて

8

この日付を印刷すると、「America/New_York」タイムゾーン(これは私が間違っている)で「2012年1月12日10:25 AM」と表示されます。

いいえ。サマータイムは3月まで開始されないので、その時間に適用するのは間違いです。 NSDateFormatterはここで正しいことをしています。

特定のGMTオフセットを強制的に適用する場合は、localTimeZoneの代わりにNSTimeZone timeZoneForSecondsFromGMT:を使用する必要があります。

+0

さて、実際には、問題の原因はおそらく、月を間違って書式設定していることに気づいています。月が間違っている理由は何ですか? – MZimmerman6

+4

'[フォーマッタsetDateFormat:@" yyyy-mm-dd'T'HH:mm:ssZZZZ "];'は[フォーマッタsetDateFormat:@ "yyyy-MM-dd'T'HH:mm:ssZZZZ"]でなければなりません。 ' – yuji

+0

うわー、私は気が気になりません。どうもありがとう! – MZimmerman6