如何在没有GMT的情况下只保存时区?

时间:2016-05-27 11:41:13

标签: ios objective-c timezone

我正在使用此代码获取时区

NSMutableArray *arrResult = [NSMutableArray new];
    NSDateFormatter *dateFormatter = [NSDateFormatter new];
    NSDate *myDate = [NSDate date];
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];
    [dateFormatter setTimeStyle:NSDateFormatterLongStyle];
    [dateFormatter setDateFormat:@"ZZZ"];
    [[NSTimeZone knownTimeZoneNames] enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:obj];
        [dateFormatter setTimeZone:timeZone];
        NSString *dateString = [dateFormatter stringFromDate: myDate];
        NSMutableString *mu = [NSMutableString stringWithString:dateString];
        [mu insertString:@":" atIndex:3];
        NSString *strResult = [NSString stringWithFormat:@"(GMT%@)%@",mu,obj];
        [arrResult addObject:strResult];


    }];
    NSLog(@"%@", arrResult);

此代码的响应就像我想要的那样

"(GMT+01:00)Africa/Libreville",
    "(GMT+00:00)Africa/Lome",
    "(GMT+01:00)Africa/Luanda",
    "(GMT+02:00)Africa/Lubumbashi",
    "(GMT+02:00)Africa/Lusaka",
    "(GMT+01:00)Africa/Malabo",
    "(GMT+02:00)Africa/Maputo",
    "(GMT+02:00)Africa/Maseru",
    "(GMT+02:00)Africa/Mbabane",
    "(GMT+03:00)Africa/Mogadishu",
    "(GMT+00:00)Africa/Monrovia",
    "(GMT+03:00)Africa/Nairobi",
    "(GMT+01:00)Africa/Ndjamena",
    "(GMT+01:00)Africa/Niamey",
    "(GMT+00:00)Africa/Nouakchott",
    "(GMT+00:00)Africa/Ouagadougou",
    "(GMT+01:00)Africa/Porto-Novo",
    "(GMT+00:00)Africa/Sao_Tome",
    "(GMT+02:00)Africa/Tripoli",
    "(GMT+01:00)Africa/Tunis",

我必须在我的标签中显示此类型

enter image description here

但我要做的是当我们点击仅保存(非洲/的黎波里)时,数据库中的这部分将被保存,我不知道如何做到这一点。 请帮帮我

2 个答案:

答案 0 :(得分:0)

如果您不希望列表中有(GMT+01:00)个括号,那么您可以制作字符串,

  NSString *strResult = [NSString stringWithFormat:@"%@",obj];
    [arrResult addObject:strResult];

所以,那个支架部分不会来。

如果您希望括号部分和名称一起用于不同的任务,那么您可以创建另一个名为arrResult2的数组,并创建另一个名为strResult2的字符串,并按照上面的说明进行操作。

所以,你有两个数组。 one(arrResult)同时包含括号和名称,另一个(arrResult2)只有名称。

如果你想分隔字符串,

NSString *str = @"(GMT+00:00)Africa/Lome";

NSString *newStr = [str substringFromIndex:11];

NSLog(@"new str : %@",newStr);

我发现每个字符串都在11th index处有右括号,因此您可以使用它从原始字符串中获取子字符串。

希望这会有所帮助:)

答案 1 :(得分:0)

我经过多次尝试后得到了答案,如果有人想要这个,那么请看这里: -

NSString *zoneString = @"(GMT+13:00)Pacific/Tongatapu"

 NSUInteger location = [zoneString rangeOfString:@")"].location+1;

    NSLog(@"Trimed string:%@",[zoneString substringFromIndex:location]);

 Trimed string:Pacific/Tongatapu