如何在 coredata 中设置日期和时间间隔的谓词
Posted
技术标签:
【中文标题】如何在 coredata 中设置日期和时间间隔的谓词【英文标题】:How to set the Predicate for date and time interval in coredata 【发布时间】:2014-05-21 12:21:03 【问题描述】:我正在使用情节提要和核心数据开发一个 iPad 应用程序。在我的核心数据中,我有一个表,其中包含 5 个字段 startdate、enddate、starttime 和 endtime。存储在这些字段中的值是 gmt 值。我将如何设置检查当前时间的谓词在开始日期和结束日期之间。以及开始时间和结束时间
示例数据如下。
表 A
名称 |开始日期 |结束日期 |开始时间 |结束时间
一个 | 2013 年 12 月 31 日 | 2014 年 12 月 31 日 | 5.30 | 17.40
B | 2011 年 12 月 31 日 | 2012 年 12 月 31 日 | 6.30 | 12.40
c | 2011 年 12 月 31 日 | 2015 年 12 月 31 日 | 6.30 | 8.40
这里所有的值都在 gmt 中。我需要检查当前日期(gmt)是否在开始日期和结束日期之内。这里的名称“A”和“c”满足我的条件。如果满足日期,请检查当前时间(gmt)是否在开始时间和结束时间之间.这里的“B”只满足这个条件。我如何为此编写谓词
【问题讨论】:
用谓词描述你有哪些数据实体有你想获取的日期和时间。 DisableR 我编辑了问题请检查一下 描述您在核心数据中使用的 startdate、enddate、starttime、endtime 数据类型。例如。日期、字符串、浮点数等 禁用 R 我再提一个问题你能帮我解决这个问题吗http://***.com/questions/23802117/nspredicate-for-time-interval 【参考方案1】:如果您只想获取 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];
【讨论】:
您是否只想要同时满足两个条件的人(在两个日期之间和两个时间之间)?不是很清楚你真正想要什么。【参考方案2】:使用TimeInterval
,会是这样的:
NSDate *startDate = ...;
NSDate *endDate =...;
NSDate *currentDate = [NSDate date];
NSTimeInterval currentTimeInterval = [currentDate timeIntervalSince1970];
BOOL isBetween = currentTimeInterval >= [startDate timeIntervalSince1970] && currentTimeInterval <= [endDate timeIntervalSince1970];
【讨论】:
什么是 startDate 和 endDate? start 和 endDate 由您以某种方式检索。正如你所说,你使用核心数据。 startDate 和 endDate 是我今天需要检查的表中的 2 个字段是否在该区间内以上是关于如何在 coredata 中设置日期和时间间隔的谓词的主要内容,如果未能解决你的问题,请参考以下文章