2010-02-16 79 views
0

这可能很简单。我已搜索,尚未找到。将NSString转换为具有日期格式的NSString的块

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

即:@ “2010-02-16 19点02分05秒”

编辑: 我想避免使用NSDateFormatter更通用的,用于其他情形。

+0

为什么你不想使用NSDateFormatter?它们并不是很难实现,而是专门为此目的而设计的。请参阅:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW1 – 2010-02-16 15:51:34

+0

为什么你说“没有使用NSDateFormatter “?仅仅因为你的例子不起作用?你如何创建格式化程序? – DyingCactus 2010-02-16 15:52:44

+0

有编辑。我希望它更清楚。 – erastusnjuki 2010-02-16 16:14:59

回答

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); 

但我同意:去容易对自己,并使用日期格式这一点。

+0

为了学习,这真的很有用:) – erastusnjuki 2010-02-16 16:28:28

2

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

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

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

谢谢。我知道了。我应该使用: [formatter setDateFormat:@“yyyyMMddHHmmss”]; – erastusnjuki 2010-02-16 16:23:58

1

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