1

かなり簡単な質問があります。私はUTCで一連の日付を持っています。DST に合わせて調整された (または、DST が現在有効でない場合は調整されていない) 正しい現地時間でこれらをユーザーに表示したいと考えています。

したがって、次のようなことを行うと、有効なときに DST を考慮して、timeStamp がニューヨークの現地時間に正しく設定されますか?

NSDate *date = initialise with a UTC time

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"America/New_York"];
    [formatter setTimeZone:timeZone];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSString *timeStamp = [formatter stringFromDate:date];

それとも、私は何か他のことをする必要がありますか?NSTimeZone.isDaylightSavingTime/NSTimeZone.daylightSavingTimeOffset を確認し、それに応じて日付を調整しますか?

前もって感謝します?

トゥイブル。

4

1 に答える 1

2

はい、NSDateFormattertimeZone を で作成すると、DST に合わせて自動的に調整されます[NSTimeZone timeZoneWithName]NSTimeZoneは、各タイム ゾーンの DST 規則を知っており、未来と過去を調べることができ、NSDate渡された に対して正しいことを行いstringForDateます。ただし、DST を使用して を作成した場合、調整は行われませんNSTimeZone[NSTimeZone timeZoneForSecondsFromGMT]また、DST 規則は変更される可能性があることにも注意してください。つまりNSTimeZone、すべてのタイム ゾーンで常に正しいことが保証されているわけではありません。

DST の正しい現地時間を使用しNSTimeZone.isDaylightSavingTimeたりNSTimeZone.daylightSavingTimeOffset、フォーマットしたりする必要はありません。NSDateこれらのメソッドはどちらも現在の時刻で動作します。NSDateがタイムゾーンの DST 内にあるかどうかを知りたい場合はメソッドNSTimeZone.isDaylightSavingTimeForDateを使用でき、NSDate の DST オフセットが何であるかを知りたい場合は メソッドを使用できますNSTimeZone.daylightSavingTimeOffsetForDate

于 2014-03-13T10:29:26.300 に答える