NSPredicate用于检查同一日期

施密特

我想检查2 NSDates它们是否在同一日期(时间可以不同)。我目前所拥有的是:

- (NSPredicate*) predicateWithDate:(NSDate *)date {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit ) fromDate:date];
    //create a date with these components
    NSDate *startDate = [calendar dateFromComponents:components];
    [components setMonth:0];
    [components setDay:1];
    [components setYear:0];
    NSDate *endDate = [calendar dateByAddingComponents:components toDate:startDate options:0];
    return [NSPredicate predicateWithFormat:@"((ANY notes.date >= %@) AND (ANY notes.date < %@))",startDate,endDate];
}
马丁·R

您的startDate,endDate计算看起来几乎正确,您只忘记了NSDayCalendarUnit

NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date];

有多种方法可以计算当天的开始日期和结束日期,我更喜欢以下略短的代码:

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *startDate;
NSTimeInterval interval;
[calendar rangeOfUnit:NSDayCalendarUnit startDate:&startDate interval:&interval forDate:date];
NSDate *endDate = [startDate dateByAddingTimeInterval:interval];

您的谓词将查找带有注释的所有对象date >= startDate,以及带有(可能不同的)注释的所有对象date < endDate

如果要查找给定日期至少有一个音符的对象,则需要一个子查询:

[NSPredicate predicateWithFormat:@"SUBQUERY(notes, $n, $n.date >= %@ AND $n.date < %@).@count > 0",
           startDate,endDate];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查Java 8中“ Instant”的两个实例是否在同一日期

来自分类Dev

在Go中检查两个时间对象是否在同一日期

来自分类Dev

添加同一日期的值

来自分类Dev

熊猫根据同一日期合并行

来自分类Dev

同一日期只能选择时差

来自分类Dev

处理同一日期出现的值

来自分类Dev

同一日期出现多少次

来自分类Dev

由同一用户MySQL在同一日期选择多个条目

来自分类Dev

在同一日期或最接近的日期(之前或之后)联接两个表

来自分类Dev

[SQL]从一行中选择同一日期

来自分类Dev

仅计算同一日期excel的一个值

来自分类Dev

同一日期不同时间长

来自分类Dev

取共享同一日期的数据框元素的平均值

来自分类Dev

选择distinct(date)多次返回同一日期

来自分类Dev

Later.js-下个月的同一日期

来自分类Dev

将同一日期和ID的列中的值相加

来自分类Dev

计算同一日期多项服务的固定成本/天

来自分类Dev

SQL查询同一日期开始的多个用户

来自分类Dev

PHP和JS转换同一日期的方式有所不同

来自分类Dev

同一日期两个不同时间之间的值差

来自分类Dev

如何查询sql以获取同一日期的最新记录

来自分类Dev

我想查找MongoDB中同一日期的信息

来自分类Dev

MySQL和PHP:从同一日期选择所有字段

来自分类Dev

在MySQL中获取同一日期的最短时间

来自分类Dev

PHP和MySQL在同一日期给出两个不同的星期数

来自分类Dev

同一日期以不同的格式返回不同的值

来自分类Dev

取共享同一日期的数据框元素的平均值

来自分类Dev

如何查找同一日期的重复记录

来自分类Dev

计算同一日期多个服务的固定成本/天