如何在coredata中设置日期和时间间隔的谓词

时间:2014-05-21 12:21:04

标签: ios objective-c core-data nspredicate

我正在使用故事板和核心数据开发一个iPad应用程序。在我的核心数据中,我有一个表有5个字段startdate,enddate,starttime和endtime。这些字段中存储的值是gmt值。如何设置检查当前时间的谓词是在startdate和enddate之间。和开始时间和结束时间

下面给出了样本数据。

表A

名称| startdate |结束| starttime |结束时间

A | 2013年3月31日| 2014年3月31日| 5.30 | 17.40

B | 2011年3月31日| 31/12/2012 | 6.30 | 12.40

c | 2011年3月31日| 2015年12月31日| 6.30 | 8.40

此处所有值均以gmt为单位。我需要检查当前日期(gmt)是否在startdate和enddate.here名称' A'和' c'满足我的条件。如果满足日期检查当前时间(gmt)是在开始时间和结束时间之间。这里' B'只满足这个条件。我怎么写谓词

2 个答案:

答案 0 :(得分:0)

如果您只想获取startdate和enddate之间的内容,请使用以下内容:

NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"startdate >= %@ AND enddate <= %@"
, startdate
, enddate];

如果你想在start和enddate之间获取一个,在starttime和endtime之间使用这样的东西:

NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"(startdate >= %@ AND enddate <= %@) AND (starttime >= %@ AND endtime <= %@)"
, startdate
, enddate
, starttime
, endtime];

答案 1 :(得分:-1)

使用TimeInterval,它会是这样的:

NSDate *startDate = ...;
NSDate *endDate =...;

NSDate *currentDate = [NSDate date];
NSTimeInterval currentTimeInterval = [currentDate timeIntervalSince1970];

BOOL isBetween = currentTimeInterval >= [startDate timeIntervalSince1970] && currentTimeInterval <= [endDate timeIntervalSince1970];