问题
I have one table with 4 fields startdate ,enddate, starttime and endtime. I need to set predicate something like
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
How i set predicate for this type of condition.Current date and current time is the my system time in gmt.
回答1:
You can use NSCompoundPredicate
Create NSMutableArray to hold your predicates with their conditions
NSMutableArray *conditions = [NSMutableArray array];
Build your conditions and add them to this array
[conditions addObject:[NSPredicate predicateWithFormat:@"startdate <= %@ AND enddate <= %@",[NSDate date],[NSDate date]]];
Add as many conditions as you like. Finally build your NSCompoundPredicate
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:conditions];
If you have your startdate and enddate in NSDate format you can access it time component as well, there is no need of separate starttime and endtime just compare the two dates and should be ok.
来源:https://stackoverflow.com/questions/23802117/nspredicate-for-time-interval