使用Objective-C/C查找DST(夏令时)时间戳?

Gro*_*oot 5 c cocoa-touch objective-c dst ios

有没有办法在使用C或Objective-C的每个国家的日光开始和结束时获得具体日期(方式)?

在墨西哥,夏季时间从4月的第一个星期日凌晨2点开始,到10月的最后一个星期日凌晨2点结束.在许多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)
Run Code Online (Sandbox Code Playgroud)

我知道有可能知​​道当前是否正在使用夏令时

NSTimeZone* systemTimeZone = [NSTimeZone systemTimeZone];
BOOL dstIsOn = [systemTimeZone isDaylightSavingTime];
Run Code Online (Sandbox Code Playgroud)

并且可以获得直到下一个Daylight Savings开始的时间

NSTimeZone* systemTimeZone = [NSTimeZone systemTimeZone];
NSTimeInterval delta = [systemTimeZone daylightSavingTimeOffset];
Run Code Online (Sandbox Code Playgroud)

但是:我如何才能找到夏令时开始/结束的具体日期?

那里有一些我无法找到的杀手表吗?

任何帮助将不胜感激!

lxt*_*lxt 8

是的,有 - 你可以使用[NSTimeZone nextDaylightSavingTimeTransitionAfterDate:]方法.这将返回一个NSDate,您可以使用它daylightSavingTimeOffsetForDate来确定偏移量.

通常你会用它来查找下一个偏移量,但是你可以用不同的日期多次运行它来获得一系列即将到来的夏令时变化.还有一种方便的方法nextDaylightSavingTimeTransition,它将始终返回下一个过渡.