我需要写一个NSPredicate来查看提供的日期是否介于内部的某个时间之间。
例如,如果我提供数据12 Mar, 2012
。它需要查看它是否介于startdate
和enddate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(statrDate >= %@) AND (enddate <= %@)", providedDate, ProvidedDate];
上述示例中的 1。)startdate
为10 Mar 2012
,endDate
为20 Mar 2012
。但NSPredicate
并未返回任何内容,因为我已将2012年3月12日指定为providedDate
。
2。)我可以使用BETWEEN
子句这样的场景
答案 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];