NSPredicate的时间间隔

时间:2014-05-22 08:56:00

标签: ios objective-c core-data nspredicate

我有一个包含4个字段startdate,enddate,starttime和endtime的表。我需要设置类似

的谓词
if
   startdate<= currentdate and currentdate <= enddate
   if 
      starttime <= currenttime and endtime <= endtime
   else
      starttime <= currenttime and currenttime<= 23.00 or 0.00 <= currentime and currentime <= endtime   

我如何为这种类型的条件设置谓词。当前日期和当前时间是我在gmt中的系统时间。

1 个答案:

答案 0 :(得分:0)

您可以使用NSCompoundPredicate

创建NSMutableArray以保存谓词及其条件

NSMutableArray *conditions = [NSMutableArray array];

构建条件并将它们添加到此数组

[conditions addObject:[NSPredicate predicateWithFormat:@"startdate <= %@ AND enddate <= %@",[NSDate date],[NSDate date]]];

添加任意数量的条件。最后建立你的NSCompoundPredicate

NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:conditions];

如果您的startdateenddate格式为NSDate,您也可以访问时间组件,则无需单独starttime和{{1}只是比较两个日期,应该没问题。