Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSPredicate filtered by year moth day

I use Core Data for storing my data model objects. Each object has NSDate property.

NSDate property has format like below:

2013-03-18 12:50:31 +0000

I need to create predicate that will fetch my objects just by this value 2013-03-18 without time.

like image 234
Matrosov Oleksandr Avatar asked Mar 19 '13 12:03

Matrosov Oleksandr


1 Answers

While David showed how you can create a predicate, i want to add a easier way to generate a date for 0:00

NSDate *startDate = [NSDate date];
NSTimeInterval lengthDay;

[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit 
                                startDate:&startDate
                                 interval:&lengthDay 
                                  forDate:startDate];

startDate now contain a date representing 0:00 for the current time zone of today

NSDate *endDate = [startDate dateByAddingTimeInterval:lengthDay];

Now we can put it into the predicate

NSPredicate *daySpanPredicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date < %@)", startDate, endDate];

Thanks to MartinR for the improvement.

like image 104
vikingosegundo Avatar answered Sep 23 '22 04:09

vikingosegundo