2013-03-18 6 views
5

CまたはObjective-Cを使用して各国の夏時間の開始日と終了日を特定する方法はありますか?Objective-C/Cを使用してDST(夏時間)タイムスタンプを検索しますか?

メキシコでは、夏時間は4月の第1日曜日の午前2時に開始し、夏時間は午前2時に10月の最後の日曜日に終了します。多くのPOSIXシステムでは、これは私が知っている

M4.1.0/2,M10.5.0/2 
(Begins: Month 4, 1st Sunday at 02:00AM, Ends: Month 10, last Sunday at 02:00AM) 

として書かれていることは、夏時間が

NSTimeZone* systemTimeZone = [NSTimeZone systemTimeZone]; 
BOOL dstIsOn = [systemTimeZone isDaylightSavingTime]; 

を使用して、現在アクティブであり、次のDaylight Savingsが始まるまでの時間を得ることが可能であることかどうかを知ることが可能です

NSTimeZone* systemTimeZone = [NSTimeZone systemTimeZone]; 
NSTimeInterval delta = [systemTimeZone daylightSavingTimeOffset]; 

しかし:どのように私は、夏時間が/終了を開始することを特定の日を見つけるに行きますか?

私が見つけられなかったキラーテーブルがありますか?

ご協力いただければ幸いです!

+0

米国では、現在、各夏時間が約3週間延長されています。 –

+0

@CarlVeazeyあなたは本当に正しいです。カザフスタンの栄光の国に喜んでそれをDSTを観察したのであればメジコに変えました。 – Groot

答えて

8

はい、あります - [NSTimeZone nextDaylightSavingTimeTransitionAfterDate:]メソッドを使用できます。これはNSDateを返します。これはdaylightSavingTimeOffsetForDateと一緒に使用してオフセットの設定を行います。

通常、これを使用して次のオフセットを見つけることができますが、別の日付で2回以上実行すると明示的に夏時間の変更が行われます。また、次の遷移を常に返す便利なメソッドnextDaylightSavingTimeTransitionもあります。

+0

お試しいただきありがとうございます! – Groot

+0

DSTルールは頻繁に変更され、AppleはiOSアップデートをリリースします。したがって、NSTimeZoneメソッドの日付が古い可能性があります。私たちのプロジェクトでは、あなたが手動で更新する "killer table"という名前を使用します。 – Jeepston

+0

@Jeepstonええ、私はそれを知っていた...私はあなたのキラーテーブルがグラブのために幸運なことは起こりませんか? ;) – Groot

関連する問題