如何在 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 中设置日期和时间间隔的谓词的主要内容,如果未能解决你的问题,请参考以下文章

如何在pyspark中设置计数id的日期间隔?

如何在 Swift 4 CoreData 中设置合并策略

如何在Excel中设置日期倒计时函数,不包含周六周日两天。

在本地通知中设置repeatInterval

如何在javascript中设置定时间隔?

如何在lua中设置事件之间的时间间隔