这可能很简单。我已搜索,尚未找到。将NSString转换为具有日期格式的NSString的块
如何将NSString @“20100216190205”转换为格式@“yyyy-MM-dd HH:mm:ss”的NSString。
即:@ “2010-02-16 19点02分05秒”
编辑: 我想避免使用NSDateFormatter更通用的,用于其他情形。
这可能很简单。我已搜索,尚未找到。将NSString转换为具有日期格式的NSString的块
如何将NSString @“20100216190205”转换为格式@“yyyy-MM-dd HH:mm:ss”的NSString。
即:@ “2010-02-16 19点02分05秒”
编辑: 我想避免使用NSDateFormatter更通用的,用于其他情形。
纯粹作为编写代码的练习:
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);
但我同意:去容易对自己,并使用日期格式这一点。
为了学习,这真的很有用:) – erastusnjuki 2010-02-16 16:28:28
您可以提取每个子字符串,将它们转换为整数(-intValue
),然后使用NSDateComponents
将它们转换为日期。而且比使用NSDateFormatter更麻烦。
在你的情况下,NSDateFormatter的格式需要调用-dateFromString:
前被设置为yyyyMMddHHmmss
,即
[formatter setDateFormat:@"yyyyMMddHHmmss"];
NSDate *date = [formatter dateFromString:@"20100216190205"];
....
谢谢。我知道了。我应该使用: [formatter setDateFormat:@“yyyyMMddHHmmss”]; – erastusnjuki 2010-02-16 16:23:58
你需要你的formatter
的格式设置为YYYYMMDDHHMMSS解析你有串您例。您需要创建一个新的格式化程序或修改原始格式化程序的格式,以合并您想要的更具视觉吸引力的格式(@"yyyy-MM-dd HH:mm:ss"
)。
为什么你不想使用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
为什么你说“没有使用NSDateFormatter “?仅仅因为你的例子不起作用?你如何创建格式化程序? – DyingCactus 2010-02-16 15:52:44
有编辑。我希望它更清楚。 – erastusnjuki 2010-02-16 16:14:59