我正在尝试获取systemTimeZone,但是它给了我错误的数据:
NSTimeZone * currentDateTimeZone = [NSTimeZone systemTimeZone];
NSString* name = [currentDateTimeZone name];
int myGMT = (int)roundf([currentDateTimeZone secondsFromGMT]/60.f/60.f);
我住在匈牙利的布达佩斯。它在格林尼治标准时间+1,但我正在
myGMT = 2.
但是名称可以:
name = Europe/Budapest
为什么?
最佳答案
欧洲/布达佩斯时区的当前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偏移量。
关于ios - 错误的systemTimeZone,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23308978/