ios - 如何使用componentsSeparatedByCharactersInSet将HH:MM:SS拆分为NSArray

标签 ios objective-c date

像这个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创建起来比较昂贵。如果可以做到这一点,则应该在循环之外创建它(尽管它不是线程安全的);

关于ios - 如何使用componentsSeparatedByCharactersInSet将HH:MM:SS拆分为NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18651585/

相关文章:

ios - 为 ios 构建具有电子签名功能的应用程序可能使用单触摸?

javascript - 如何在javascript中执行日期减法

ios - UIToolBar 更改标签后恢复

ios - Meteor 应用程序和 iOS 状态栏

objective-c - 何时以及如何在 xcode 4 中使用聚合目标

javascript - 生成一年内的随机日期并赋值给var

Javascript 月份差异

ios - 本地通知每天和每月重复

ios - 如何为 Swift Dictionary 可变扩展获取正确的类型以添加​​具有不同键的 Int 值

iOS 推送通知应用程序不要求注册许可