4

2011-01-19T20:30:00-5:00のような文字列があり、それらを NSDate に解析したいのですが、元のタイム ゾーンを維持したいと考えています。

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat: @"yyyy-MM-dd'T'HH:mm:ssZ"];
NSLog(@"%@", [dateFormatter dateFromString: dateString]);
[dateFormatter release];

そのスニペットは私に2011-01-20 02:30:00 +0100を与えますが、これも正しいですが、NSDate のローカル タイム ゾーン +0100 ではなく、元のタイム ゾーン -0500 を維持したいと考えています。

4

1 に答える 1

2

まず第一に、NSDate オブジェクトはロケールやタイムゾーンに関連するものを保存せず、内部では基本的に 2001 年 1 月 1 日 GMT の最初の瞬間からの秒数として表されることに注意してください。

NSTimezone オブジェクトの文字列のタイムゾーンを取得できる場合は、dateFromString を実行する前に次の手順を実行してください。

[dateFormatter setTimeZone:timezoneForString];

そして、あなたは設定されます。

NSTimezone を取得できず、"2011-01-19T20:30:00-5:00" という文字列しかない場合、-5 から NSTimezone を取得する良い方法はありません。 00。UTC オフセットからタイムゾーン ID (「America/Los_Angeles」など) またはタイムゾーン名 (「Pacific Daylight Time」など) を取得する明確な方法が常にあるとは限らないためです。そのため、オフセットを手動で抽出して保存し、表示する前に時刻に追加する独自のコードを作成する必要があります。

于 2011-10-30T20:55:14.823 に答える