无法将NSTimeZone设置为所需格式

时间:2012-03-05 11:11:01

标签: iphone nsdate nsdateformatter nstimezone

我有一个TimeZone作为NSString值,格式为“GMT-09:00”。

我想要的只是用这种格式设置我的NSTimeZone。我试过但是没能做到这一点。这个时间可能每次都有所不同,所以我不能在方法

中将其设置为静态

例如。我不能这样做 - timeZoneForSecondsFromGMT:( - 9 * 3600)。

另外,无论如何,我可以将上述格式(GMT-09:00)转换为秒数吗?

编辑:我只想将时区设置为特定的GMT格式。它可以是任何东西,GMT-09:00,GMT + 05:30等等

如果它是静态值,我可以使用以下方法进行NSTimeZone。

[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:(-9*3600)]];

但值“GMT-09:00”是一个NSString。因此,每次,我都必须打破字符串并获取小时和分钟的值。是否有更简单的方法?????

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

你试过这样的事吗?

NSString *tzStr = @"GMT-09:00";
NSTimeZone *tz = [[NSTimeZone alloc] initWithName:tzStr];
NSLog(@"Tz: %@", tz);
NSLog(@"Offset: %d", [tz secondsFromGMT]);

// Tz: GMT-0900 (GMT-09:00) offset -32400
// Offset: -32400

也适用于@"GMT+5:30"

// Tz: GMT+0530 (GMT+05:30) offset 19800

然后只使用[formatter setTimeZone:tz];

答案 1 :(得分:0)

这个对你很有帮助。优化帮助

float offsetSecond = ([[NSTimeZone systemTimeZone] secondsFromGMT] / 3600.0);