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

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

IE:@“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);

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

其他提示

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

在您的情况下, NSDateFormatter 的格式需要设置为 yyyyMMddHHmmss 打电话之前 -dateFromString:, , IE。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top