系统时区错误

时间:2014-04-26 09:24:56

标签: ios timezone nsdate nstimezone

我正在尝试获取systemTimeZone,但它给了我错误的数据:

NSTimeZone * currentDateTimeZone = [NSTimeZone systemTimeZone];
NSString* name = [currentDateTimeZone name];
int myGMT = (int)roundf([currentDateTimeZone secondsFromGMT]/60.f/60.f);

我住在匈牙利布达佩斯。这是GMT + 1,但我得到myGMT = 2. 但名字还可以:name = Europe/Budapest 为什么呢?

1 个答案:

答案 0 :(得分:3)

目前欧洲/布达佩斯时区的GMT偏移量为GMT + 2,因为 Daylight Saving Time于2014年3月30日星期日开始,时钟是 提前一小时(见http://www.timeanddate.com/worldclock/city.html?n=50)。

您可以使用

进行验证
BOOL isDst = [currentDateTimeZone isDaylightSavingTime];
// --> YES
NSTimeInterval dstOffset = [currentDateTimeZone daylightSavingTimeOffset];
// --> 3600

如有必要,您可以计算

[currentDateTimeZone secondsFromGMT] - [currentDateTimeZone daylightSavingTimeOffset]

获取时区的“默认”GMT偏移量。