问题
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