如何使用Objective-C解析日期字符串

时间:2011-05-25 17:42:07

标签: iphone objective-c

如何解析具有此表单“2011052620110529”的NSString将每个值作为NSString?我试着写这个

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyyMMddyyyyMMdd"];

但我不认为这是正确的......请帮帮我

3 个答案:

答案 0 :(得分:2)

(我在这里假设你的意思是“将其解析为日期”,而不是“将其分解为两个字符串。”你的问题不明确。)

该字符串不代表单个有效时刻;相反,它代表(大概)一段时间。

在解析两个日期之前,您必须将字符串拆分为两个,然后获取它们之间的间隔。假设每个组件总是8个字符:

NSString *strComplete = ...;
NSString *strFirstDate = [strComplete substringToIndex: 8];
NSString *strSecondDate = [strComplete substringFromIndex: 8];

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyyMMdd"];
NSDate *firstDate = [formatter dateFromString: strFirstDate];
NSDate *secondDate = [formatter dateFromString: strSecondDate];

NSTimeInterval timeInterval = [secondDate timeIntervalSinceDate: firstDate];

答案 1 :(得分:1)

你要解析数字还是什么?你听到的是句子......

看一下NSString's class reference,它可以很容易地打破更多部分的字符串。

[yourString subStringWithRange:NSMakeRange(location,length)];

答案 2 :(得分:0)

您的NSString值包含2个日期,而不是一个。因此,您将无法使用NSDateFormatter一步解析它。您需要先分别解析每个日期,首先使用[s substringWithRange:NSMakeRange(0,8)][s substringWithRange:NSMakeRange(8,8)]之类的内容提取前8个字符,然后是最后8个字符。然后,您可以使用“yyyyMMdd”等格式将这些子字符串传递给日期格式化程序。