2012-04-23 52 views
1

我需要編寫一個NSPredicate來查看提供的日期是否在一定時間內。編寫一個NSPredicate來查找日期是否在一定範圍內

例如,如果我提供數據12 Mar, 2012。它需要,看看它是否在上述例子中是startdate10 Mar 2012startdateenddate

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(statrDate >= %@) AND (enddate <= %@)", providedDate, ProvidedDate]; 

1)之間下降,endDate20 Mar 2012。但NSPredicate不會返回任何內容,因爲我已將2012年3月12日指定爲providedDate

2)我可以使用BETWEEN子句所以這種情況下

回答

1

使用複合謂語:

NSPredicate *greaterThanPredicate = [NSPredicate predicateWithFormat:@"statrDate <= %@", providedDate]; 
NSPredicate *lessThanPredicate = [NSPredicate predicateWithFormat:@"enddate >= %@", providedDate]; 
NSPredicate *betweenPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:greaterThanPredicate, lessThanPredicate, nil]]; 

我以前>=<=因爲你沒有。如果它不應該包含在內,請分別切換到><

1

只是刪除括號,並嘗試:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"statrDate >= %@ AND enddate <= %@", providedDate, ProvidedDate]; 
+0

看到這一點:http://stackoverflow.com/q/8364495/1126111 – Hector 2012-04-23 04:11:27

相關問題