编写NSPredicate以查找日期是否介于某个范围之间

时间:2012-04-23 01:04:31

标签: iphone objective-c

我需要写一个NSPredicate来查看提供的日期是否介于内部的某个时间之间。

例如,如果我提供数据12 Mar, 2012。它需要查看它是否介于startdateenddate

之间
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(statrDate >= %@) AND (enddate <= %@)", providedDate, ProvidedDate];
上述示例中的

1。)startdate10 Mar 2012endDate20 Mar 2012。但NSPredicate并未返回任何内容,因为我已将2012年3月12日指定为providedDate

2。)我可以使用BETWEEN子句这样的场景

2 个答案:

答案 0 :(得分:1)

使用复合谓词:

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

我使用了>=<=,因为你做到了。如果它不应包含在内,请分别切换到><

答案 1 :(得分:1)

只需删除括号并尝试:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"statrDate >= %@ AND enddate <= %@", providedDate, ProvidedDate];
相关问题