NSStrings的NSArray只返回一个对象中的一个大字符串,我需要很多对象

时间:2013-05-31 19:36:24

标签: ios json nsstring nsmutablearray substring

我有一个NSArray,它通过JSON获取WS的一些日期值。 这就是我的NSLOG回归:     “2013-05-31T17:00:00Z”     “2013-05-31T17:30:00Z”     “2013-05-31T18:00:00Z”     “2013-05-31T20:00:00Z” ...

我需要一个新的NSArray返回小时和分钟,就像那样: “17:00”, “17:30”, “18:00”, “20:00”, ...

我做的事情是:

        for (int a =0; a<array2.count; a++)
        {
            NSString *myString = [array2 objectAtIndex:a];
            NSString *horaDeInicio = [myString substringWithRange:NSMakeRange(11, 5)];
            [horariosProgramas addObject:horaDeInicio];
        }

响应是我所需要的,但响应只有一个大字符串。所以我的数组只有一个对象。我需要在对象中分开这个大字符串。我怎样才能做到这一点?? 谢谢!

2 个答案:

答案 0 :(得分:3)

将它与T和Z字符分开。做这样的事情:

for (int a =0; a<array2.count; a++)
{
     NSString *myString = [array2 objectAtIndex:a];
     NSArray *arr = [myString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"TZ"]];
     NSString *yourDate = [arr objectAtIndex:1];

     [horariosProgramas addObject:yourDate];
}

使用print语句确认您的数组索引,您就可以了。

答案 1 :(得分:0)

使用dateFormatter转换日期从长远来看会更好,并且您想要更改显示格式或其他东西

NSArray *array2= @[@"2013-05-31T17:00:00Z", 
                   @"2013-05-31T17:30:00Z", 
                   @"2013-05-31T18:00:00Z", 
                   @"2013-05-31T20:00:00Z"];

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"en_US_POSIX"]];

NSString *inputDateFormat = @"yyyy-MM-dd'T'HH:mm:ss'Z'";
NSString *outputDateFormat = @"HH:mm";

for (NSString *dateString in array2) {
    [dateFormatter setDateFormat:inputDateFormat];
    NSDate *date = [dateFormatter dateFromString:dateString];

    [dateFormatter setDateFormat:outputDateFormat];
    [horariosProgramas addObject:[dateFormatter stringFromDate:date]];
}