2011-07-22 16 views
0

次のコードを使用して、タイムゾーンをヨーロッパのストックホルムに設定しています。Objective-C - NSTimeZone 2時間が間違っていますか?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Stockholm"]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 

NSDate *webUpdateDate = [dateFormatter dateFromString:@"2011-07-22 22:10"]; 
// Outputs "2011-07-22 20:10 +0000" 

誰でも知っていますか?

+3

スタックオーバーフローの誰もがタイムゾーンをストックホルムに設定している理由を知っています。 :) –

+0

それは一貫してそのような場合は、なぜ手動で2hrsを手動で設定しないのですか? – Dair

答えて

3

NSLogを使用して日付を検査していると仮定します。 NSDateオブジェクトは絶対時間を表します。時間帯の概念はないため、descriptionが要求されると、あたかもGMTの時間であるかのように表示されます。日付が最初にすでにその時間帯は、ストックホルムに設定されていたフォーマッタ、を使用して作成されたので、私は、

NSLog(@"%@", [dateFormatter stringFromDate:webUpdateDate]); 

:あなたは絶対時間がストックホルムの時間帯に相当することが必要な場合は、再度、日付フォーマッタを使用する必要がありますあなたが入力のために使ったのと同じ文字列を与えると信じてください:@"2011-07-22 22:10"