如何解析具有此表单“2011052620110529”的NSString将每个值作为NSString?我试着写这个
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyyMMddyyyyMMdd"];
但我不认为这是正确的......请帮帮我
答案 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”等格式将这些子字符串传递给日期格式化程序。