像这个NSString @"2013-09-02 0:00:00 +0800"
一样,我可以使用componentsSeparatedByCharactersInSet
方法将其拆分为NSArray。
数组看起来像这样
@["2013-09-02", "0:00:00", "+0800"].
但是如何将
NSString @"0:00:00"
拆分为NSArray看起来像@[@"0", "00", "00"]
在Objective-C中使用`componentsSeparatedByCharactersInSet
方法? 最佳答案
如果您想知道日期的小时,分钟和秒,则可能应该先使用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创建起来比较昂贵。如果可以做到这一点,则应该在循环之外创建它(尽管它不是线程安全的);