将NSString转换为具有日期格式的NSString的块

时间:2010-02-16 15:44:42

标签: iphone nsstring nsdate nsdateformatter nsdatecomponents

这可能很简单。我搜索过,还没找到。

如何将NSString @“20100216190205”转换为格式为@“yyyy-MM-dd HH:mm:ss”的NSString。

即:@“2010-02-16 19:02:05”

修改 对于其他情况,我想避免使用NSDateFormatter更通用。

3 个答案:

答案 0 :(得分:2)

您可以提取每个子字符串,将它们转换为整数(-intValue),然后使用NSDateComponents将这些子字符串转换为日期。它比使用NSDateFormatter麻烦得多。

在您的情况下,在调用yyyyMMddHHmmss之前,需要将NSDateFormatter的格式设置为-dateFromString:,即

[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSDate *date = [formatter dateFromString:@"20100216190205"];
....

答案 1 :(得分:1)

您需要将formatter的格式设置为yyyyMMddHHmmss来解析示例中的字符串。您需要创建一个新的格式化程序或修改原始格式化程序的格式,以合并您想要的更具视觉吸引力的格式化程序(@"yyyy-MM-dd HH:mm:ss")。

答案 2 :(得分:1)

纯粹作为编写代码的练习:

NSString* digits = @"20100216190205"; // this is probably a parameter somewhere
NSMutableString* formatted = [digits mutableCopy];
[formatted insertString:@":" atIndex:12];
[formatted insertString:@":" atIndex:10];
[formatted insertString:@" " atIndex:8];
[formatted insertString:@"-" atIndex:6];
[formatted insertString:@"-" atIndex:4];
NSLog(@"original string: %@ -> formatted: %@", digits, formatted);

但我同意:对自己轻松一点,并为此使用日期格式化程序。