将string转换为NSDate问题:无法识别选中
indexNumber.row
的date类似于2012-03-09 23:00:00 +0000
。 我已经尝试了一些不同的方法来让我的date到一个NSDate
,但我不断得到标题错误。
NSString *inputString = [self.measurements objectAtIndex:indexNumber.row]; // Convert string to date object NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [dateFormatter dateFromString:inputString ]; NSLog(@"date format is: %@", date);
任何想法,为什么我得到以下错误:
由于未捕获exception'NSInvalidArgumentException',原因:' – [__ NSDate长度]:无法识别的select器发送到实例0x6ca0c60'
你得到这个错误,因为你正在传递一个NSDate
对象到dateFromString:
添加一个NSLog
,你会看到:
NSString *inputString = [self.measurements objectAtIndex:indexNumber.row]; if ([inputString isKindOfClass:[NSDate class]]) { NSLog(@"inputString is of type NSDate"); }
另外,这里是如何重现你的错误:
NSString *inputString = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSDate *date = [dateFormatter dateFromString:inputString];
这意味着数组self.measurements
包含NSDate
对象而不是NSString
对象。
当你纠正你目前的问题时,你可能会遇到一个新的,因为你不使用正确的date格式。 要parsingtypes为2012-03-09 23:00:00 +0000
datestring,您应该使用以下date格式:
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zz"];
或者按照sch的build议,或者如果你根本不需要时间,你可以截断你提供给dateFormatter的string。 例如像这样:
NSDate *date = [dateFormatter dateFromString:[inputString substringToIndex:9]];
其中9是一个索引,最多你想要一大块string。