如何从 knownTimeZoneNames 获取每个时区的 GMT 值
How to get GMT value for each timezone from knownTimeZoneNames
我知道如何获取已知时区的列表:[NSTimeZone knownTimeZoneNames]
。
但此方法 returns 仅时区名称(如 "Africa/Abidjan")。
如何从该数组中获取每个已知时区的 GMT 值(如 GMT+3
或 GMT-7
)?
通常,为每个时区名称创建一个NSTimeZone
实例,然后从每个实例中获取secondsFromGMT
属性:
for (NSString *name in [NSTimeZone knownTimeZoneNames]) {
NSTimeZone *tz = [NSTimeZone timeZoneWithName:name];
NSInteger gmtOffset = tz.secondsFromGMT;
}
唯一悬而未决的问题是将秒数转换为小时数或 hours/minutes,这应该不会太困难。也许默认 [NSTimeZone description]
会 return 正确的信息?
你也可以使用方法timeZoneForSecondsFromGMT
NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:secondsFromGMT];
NSMutableString *name = [NSMutableString stringWithString:timeZone.name];
if (! [name isEqualToString:@"GMT"])
{
[name insertString:@":" atIndex:6];
}
return [NSString stringWithString:name];
输出将为 @"GMT+03:00"
。你不需要从小时和分钟来构建它。
我知道如何获取已知时区的列表:[NSTimeZone knownTimeZoneNames]
。
但此方法 returns 仅时区名称(如 "Africa/Abidjan")。
如何从该数组中获取每个已知时区的 GMT 值(如 GMT+3
或 GMT-7
)?
通常,为每个时区名称创建一个NSTimeZone
实例,然后从每个实例中获取secondsFromGMT
属性:
for (NSString *name in [NSTimeZone knownTimeZoneNames]) {
NSTimeZone *tz = [NSTimeZone timeZoneWithName:name];
NSInteger gmtOffset = tz.secondsFromGMT;
}
唯一悬而未决的问题是将秒数转换为小时数或 hours/minutes,这应该不会太困难。也许默认 [NSTimeZone description]
会 return 正确的信息?
你也可以使用方法timeZoneForSecondsFromGMT
NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT:secondsFromGMT];
NSMutableString *name = [NSMutableString stringWithString:timeZone.name];
if (! [name isEqualToString:@"GMT"])
{
[name insertString:@":" atIndex:6];
}
return [NSString stringWithString:name];
输出将为 @"GMT+03:00"
。你不需要从小时和分钟来构建它。