有没有一种方法可以使用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)

我知道有可能知​​道当前使用的夏令时是否处于 Activity 状态
NSTimeZone* systemTimeZone = [NSTimeZone systemTimeZone];
BOOL dstIsOn = [systemTimeZone isDaylightSavingTime];

并且有可能获得时间直到下一个Daylight Savings开始
NSTimeZone* systemTimeZone = [NSTimeZone systemTimeZone];
NSTimeInterval delta = [systemTimeZone daylightSavingTimeOffset];

但:如何找到夏令时开始/结束的特定日期?

是否有一些我找不到的杀手table?

任何帮助将不胜感激!

最佳答案

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

通常,您可以使用它来查找下一个偏移量,但是显然可以在不同的日期多次运行它,以获得一系列即将到来的夏时制更改。还有一个方便的方法nextDaylightSavingTimeTransition,它将始终返回下一个转换。

10-07 12:41