像这样NSString @"2013-09-02 0:00:00 +0800"
我可以使用componentsSeparatedByCharactersInSet
方法将其拆分为NSArray。
Array看起来像这样
@["2013-09-02", "0:00:00", "+0800"].
但是如何将NSString @"0:00:00"
拆分为NSArray看起来像
@[@"0", "00", "00"]
在Objective-C中使用`
componentsSeparatedByCharactersInSet
方法?
答案 0 :(得分: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”]
答案 1 :(得分: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的成本相对较高。如果你能做到这一点,你应该在循环之外创建它(虽然它不是线程安全的);
答案 2 :(得分:0)
您必须使用componentsSeparatedByString:@":"
方法。