2013-03-18 13 views
5

Gibt es eine Möglichkeit, ein bestimmtes Datum (einen Zeitpunkt) für den Beginn und das Ende von Tageszeiten für jedes Land zu erhalten, das C oder Objective-C verwendet?DST (Daylight Savings Time) Zeitstempel mit Objective-C/C suchen?

In Mexiko beginnt die Sommerzeit am ersten Sonntag im April um 2:00 Uhr und endet am letzten Sonntag im Oktober um 2:00 Uhr. In vielen POSIX-Systemen ist dies geschrieben als

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

ich weiß, ist es möglich, wenn die Sommerzeit zu wissen, zur Zeit aktiv ist mit

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

und dass es möglich ist, die Zeit zu erhalten, bis die nächsten Daylight Savings beginnt

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

ABER: Wie würde ich den bestimmten Tag zu finden, gehen Sie zu, dass die Sommerzeit beginnt/endet?

Gibt es da draußen einen Killertisch, den ich nicht finden konnte?

Jede Hilfe würde sehr geschätzt werden!

+0

FYI, in den USA ist unsere Sommerzeit jetzt an jedem Ende um etwa 3 Wochen gestiegen. –

+0

@CarlVeazey Sie sind in der Tat richtig. Geänderte Land zu Méjico obwohl würde es glücklich zu Glorious Nation von Kasachstan geändert haben, wenn sie DST beobachtet hätten. – Groot

Antwort

8

Ja, es gibt - Sie können [NSTimeZone nextDaylightSavingTimeTransitionAfterDate:] Methode verwenden. Dies liefert eine NSDate, die Sie mit verwenden können, um festzustellen, was der Offset ist.

Normalerweise würden Sie dies verwenden, um den nächsten Offset zu finden, aber Sie können es natürlich mehr als einmal mit verschiedenen Daten ausführen, um eine Reihe von bevorstehenden Sommerzeitänderungen zu erhalten. Es gibt auch eine bequeme Methode nextDaylightSavingTimeTransition, die immer den nächsten Übergang zurückgibt.

+0

Werde es ausprobieren, danke! – Groot

+0

Beachten Sie, dass sich die Regeln für die Sommerzeit häufiger ändern, als Apple iOS-Updates veröffentlicht. Daher können Daten von NSTimeZone-Methoden veraltet sein. In unserem Projekt verwenden wir, wie Sie es nennen, "Killer-Tabelle", die manuell aktualisiert wird. – Jeepston

+0

@Jeepston Ja, das war mir bewusst ... Ich bin nicht zufällig so glücklich, dass dein Mördertisch zu haben ist? ;) – Groot