我正在尝试获取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
为什么呢?
答案 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偏移量。