检查时间间隔是否落入今天

时间:2015-01-23 12:23:37

标签: ios cocoa cocoa-touch

我有一个带有事件和日历的核心数据,我需要的是构建一个谓词请求,以便只获取今天发生的事件。例如:

EVENTS(在Core Data表中,它是两个类型为Date的属性)

1) Start 10/01/2015 14:00:00 Ends 10/01/2015 16:00:00
2) Start 10/01/2015 14:00:00 Ends 11/01/2015 19:00:00
3) Start 09/01/2015 12:00:00 Ends 12/01/2015 16:00:00
4) Start 09/01/2015 12:00:00 Ends 09/01/2015 16:00:00

今天是

10/01/2015

我需要请求返回3个事件(#1-2-3)并将#4排除为:

1) Is Starting today and Ends today
2) Starts today and Ends tomorrow (so it is running today as well)
3) Started yesterday and Ends after tomorrow (so it is running today as well)
4) Is not running today

所以问题是最好的方法是什么?也许有人至少可以提供一个提示如何确定今天的开始时间戳和结束时间戳(10/01/2015 00:00:00和10/01/2015 24:00:00,如果我'我正确???)

1 个答案:

答案 0 :(得分:1)

好的,我认为你的主要问题是如何获得日期边界(即NSDate实例代表特定日期的0:00h)。这实际上非常简单:

NSDate *startOfDay;
[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay
                                startDate:&startOfDay
                                 interval:NULL
                                  forDate:yourDate];

鉴于任何日期(yourDate),startOfDay将是相同的日期,但是在0:00h。

有了这些信息,构建谓词字符串应该非常简单。条件应该是这样的:

event.startDate <= endOfDay AND event.endDate >= startOfDay