0

次のコードを使用して、タイムゾーンをヨーロッパのストックホルムに設定しています。

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"

誰もが理由を知っていますか?

4

1 に答える 1

3

を使用して日付を検査していると仮定しますNSLogNSDateオブジェクトは絶対時間を表します。タイムゾーンの概念がないため、オブジェクトを要求さdescriptionれると、GMTの時刻であるかのように表示されます。ストックホルムのタイムゾーンでその絶対時間を表示する場合は、日付フォーマッターを再度使用する必要があります。

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

日付は元々、タイムゾーンがストックホルムに設定されているフォーマッターを介して作成されたため、入力に使用したのと同じ文字列が得られると思います@"2011-07-22 22:10"

于 2011-07-22T22:35:21.403 に答える