6

有没有办法使用 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];

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

那里有一些我找不到的杀手桌吗?

任何帮助将不胜感激!

4

1 回答 1

8

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

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

于 2013-03-18T10:03:22.580 回答