2011-10-25 1 views
3

2つのタイムゾーンを比較する最も良い方法は何ですか?システムタイムゾーンと選択したタイムゾーン

- (BOOL)isEqualToTimeZone:(NSTimeZone *)aTimeZone方法を使用して2つのNSTimeZoneのインスタンスを比較しながら、私はこの問題に直面しています。

NSString *timeZoneName = ... 

NSTimeZone *sytemTimeZone = [NSTimeZone systemTimeZone]; 
NSTimeZone *selectedTimeZone = [NSTimeZone timeZoneWithName:timeZoneName]; 

if ([sytemTimeZone isEqualToTimeZone:selectedTimeZone]) 
    isEqual = YES; 
else 
    isEqual = NO; 

ステップ1:設定に移動(アプリケーション)>一般>日付&時間>タイムゾーンと "オースティン" を検索してください。あなたが得るエントリーは "Austin、U.S.A"でしょう。このタイムゾーンを選択します。これはあなたの新しいシステムタイムゾーンであるべきである(SHOULD)!

ステップ2:小さなiPhone/iPadアプリケーションを作成します。 [NSTimeZone knownTimeZoneNames]を使用して、タイムゾーン名のリストを取得します。次に、 "Austin"を探してみてください。そこにはない!だから、私は "America/Chicago"をタイムゾーンとして使うことができると思いますか?

なぜ設定のタイムゾーンリストが私たちと異なるのですか?

ステップ3:ステップ3「アメリカ/シカゴ」のシステムタイムゾーンとタイムゾーンを比較します。彼らは一致しません。

+0

システムタイムゾーンの 'name'を記録すると、何が表示されますか? –

+0

「アメリカ/セントラル(CDT)オフセット-18000(夏時間)」 – Mustafa

+0

「アメリカ/シカゴ」がアプリケーションと共に設定されている場合、「アメリカ/シカゴ(CDT)オフセット-18000(夏時間)」が表示されます。 – Mustafa

答えて

3

これはバグを投稿しました - オースティンは既知のタイムゾーンリストにないが、設定アプリによって提供されているというバグです。アップルエンジニア1として

:(-dataによって 戻るように)両方の名前とデータ

2 NSTimeZonesが等しい比較するためには、等しくなければなりません。 がタイムゾーンを比較するときは注意が必要です。なぜなら、2つのゾーンには、同じ理由で時間帯が同じではなく、 GMTからのオフセットが同じである可能性があるからです。 のタイムゾーンは、すべての種類のカレンダー計算に使用されていることを覚えておいてください。 これは、歴史のなかで、 には常に同じGMTオフセット、同じ夏時間の遷移、 などがある場合にのみ等しいことを意味します。

関連する問題