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

时间:2013-03-18 09:50:51

标签: ios objective-c c cocoa-touch dst

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

在墨西哥,夏季时间从4月的第一个星期日凌晨2:00开始,到10月的最后一个星期日凌晨2:00结束。在许多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];

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

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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:8)

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

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