您好,在我的应用程序中,我的本地数据库中的日期格式为dd-mm-yy
。现在我想从我的本地数据库中获取与月份相关的日期,例如jan表示我想从本地数据库中获取所有jan日期。我想分别将单独的日期dd和年份分别取出,并将其存储到我的UILabel中的字符串显示中。提取工作不正常请帮帮我。
在本地数据库中我的日期就像我打印数组一样,它的显示方式就像这个array11
"29-7-2014",
"15-8-2014",
"19-7-2014",
"20-7-2014",
"20-9-2014",
"18-9-2014",
"20-9-2014",
我的代码数据库获取代码。
-(void)GETVALUE{
[self openDB1];
array11 =[[NSMutableArray alloc]init];
array1 =[[NSMutableArray alloc]init];
NSString *sql =[NSString stringWithFormat:@"SELECT * FROM cl"];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(db1, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement)== SQLITE_ROW) {
char *field2 = (char *)sqlite3_column_text(statement, 1);
NSString *field2Str =[[NSString alloc]initWithUTF8String:field2];
char *field1 = (char *)sqlite3_column_text(statement, 2);
NSString *field1Str =[[NSString alloc]initWithUTF8String:field1];
NSString *str = [[NSString alloc]initWithFormat:@"%@",field1Str];
NSString *str1 = [[NSString alloc]initWithFormat:@"%@",field2Str];
[array11 addObject:str];
[array1 addObject:str1];
}
}
}
我的比较代码。
mont = @"7";
yr =@"2014";
NSInteger mon = [mont intValue];
NSInteger yea = [yr intValue];
[self GETVALUE];
NSCalendar *gregCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponent = [gregCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]];
NSArray *dobArray = array1;
NSArray *messagesArray = array11;
NSLog(@"%@",dobArray);
for (NSString *dobStr in dobArray) {
NSArray *components = [dobStr componentsSeparatedByString:@"-"];
if(components.count>3) {
NSInteger aDay = [[components objectAtIndex:0] integerValue];
NSInteger aMonth = [[components objectAtIndex:1] integerValue];
NSInteger aYear = [[components objectAtIndex:2] integerValue];
if(aMonth == mon && aYear == yea) {
[dateComponent setDay:aDay];
[dateComponent setMonth:aMonth];
[dateComponent setYear:aYear];
UIDatePicker *dp = [[UIDatePicker alloc] init];
[dp setDate:[gregCalendar dateFromComponents: dateComponent]];
//inStr = [NSString stringWithFormat:@"%@",dp];
// NSLog(@"%@ss", inStr);
}
}
}
我已经使用了上面的代码,但是它没有检查,请告诉我如何实现这个。
感谢。
答案 0 :(得分:0)
更改以下代码替换为您的for循环 的更新强>
for (int index = 0 ; index <dobArray.count ; index++) {
NSArray *components = [dobStr componentsSeparatedByString:@"-"];
if(components.count>3) {
NSString *components = [dobArray objectAtIndex:index];
NSDateFormatter *dateFormet = [[NSDateFormatter alloc]init];
[dateFormet setDateFormat:@"dd-MM-yyyy"];
NSDate *date = [dateFormet dateFromString:components];
[dp setDate:date];
}
}
现在试试。它会工作
答案 1 :(得分:0)
您的代码非常多余,包含许多奇怪的花朵,例如
mont = @"7";
NSInteger mon = [mont intValue];
第一行无关紧要,你可以写7
。 intValue
会返回int
,而integerValue
会返回NSInteger
。
或
NSString *str1 = [[NSString alloc]initWithFormat:@"%@",field2Str];
您可以使用field2Str
。
您的变量名称选择不当 - 这就是您感到困惑的原因,就像您的代码的每个外部读者一样。
在array1
中,由于某种原因重命名为dobArray
,您可以从数据库中存储str1
,这又是field2Str
。您的比较代码容易出现潜在错误,但它应该与您发布的数据一起使用。但是,如果您点击日期,则表示您正在分配日期选择器并且不执行任何操作。您似乎应该初始化日期选择器,例如通过故事板然后设置该选择器的date
。