1

像这样NSString @"2013-09-02 0:00:00 +0800"我可以使用方法将它拆分为 NSArray componentsSeparatedByCharactersInSet

数组看起来像这样

@["2013-09-02", "0:00:00", "+0800"].

但是我怎么能NSString @"0:00:00"分成 NSArray 看起来像

@[@"0", "00", "00"] 在 Objective-C 中使用 `

componentsSeparatedByCharactersInSet方法?

4

4 回答 4

3
NSString *originalValue =  @"2013-09-02 0:00:00 +0800";

// First seperated by white space
NSArray *spaceSeperated= [string componentsSeparatedByString:@" "]; // result would be @[@"2013-09-02", @"0:00:00", @"+0800"]

// now for time string seperate that one by :
NSArray *timeSeperated = [[spaceSeperated objectAtIndex:1] componentsSeparatedByString:@":"]; 

现在,timeSeperate数组将在 3 个单独的对象中包含时间值:@[@"0" , @"00" , @"00"]

于 2013-09-06T06:55:54.650 回答
2

如果您想知道日期的小时、分钟和秒,您可能应该先使用NSDateFormatter,然后使用NSDateComponents提取这些属性。

NSString *yourString = @"2013-09-02 0:00:00 +0800";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd.MM.yyyy HH:mm:ss ZZZZ"];
NSDate *date = [dateFormatter dateFromString:yourString];

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:date];
NSInteger hour = components.hour;
NSInteger minute = components.minute;
NSInteger second = components.second;

//Alternative (NSArray can only contain objects - NSNumber vs. NSInteger)
NSArray *yourArray = @[[NSNumber numberWithInteger:components.hour],
                       [NSNumber numberWithInteger:components.minute],
                       [NSNumber numberWithInteger:components.second]];`

它可能看起来像更多代码,但它是更清洁的解决方案。请记住,创建 NSDateFormatter 的成本相对较高。如果你能做到,你应该在循环之外创建它(虽然它不是线程安全的);

于 2013-09-06T06:52:14.170 回答
0
NSArray *arr = [string componentsSeparatedByString:@":"];
于 2013-09-06T06:49:47.793 回答
0

你必须使用componentsSeparatedByString:@":"方法。

于 2013-09-06T06:50:42.487 回答