3

我已经尝试了多种方法并在此站点上尝试了一些建议,但是如何确定 CoreData 属性“dueDate”是否等于“Today”,我知道 NSDate 也是一个特定时间,但我希望谓词返回 if无论一天中的时间是什么时候,它都是同一天/月/年。有什么建议么?

4

6 回答 6

3

这就是我想出的:

- (NSPredicate *)matchAttribute:(NSString *)attributeName withDate:(NSDate *)date
{
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit fromDate:date];
    NSDateComponents *oneDay = [[NSDateComponents alloc] init];
    oneDay.day = 1;

    NSDate *lastMidnight = [[NSCalendar currentCalendar] dateFromComponents:components];
    NSDate *nextMidnight = [[NSCalendar currentCalendar] dateByAddingComponents:oneDay toDate:lastMidnight options:NSWrapCalendarComponents];

    return [NSPredicate predicateWithFormat:@"(%K >= %@) AND (%K <= %@)", attributeName, lastMidnight, attributeName, nextMidnight];
}

灵感来自这里这里这里

于 2013-03-14T17:29:19.103 回答
2

通过使用 NSDateComonents 和 NSCalendar 解决了这个问题。

刚刚从原始 NSDate 创建了日/月/年的 NSDateComponents,然后使用 dateFromComponents 将其重新创建为一个日期。

这导致它是一天的开始,然后我使用上面的方法创建了另一个日期,即“明天”的开始,并使用 > 和 < 来查看它是否是“今天”。无论如何感谢您的帮助。

于 2010-07-03T18:03:14.037 回答
1

今天的概念很棘手,因为你是什么意思?这就是为什么它不是直截了当的。你的意思是在同一天、同一个月和同一年,而不考虑时区吗?你的意思是在同一个24小时内?在过去 24 小时内?它可能会变得复杂。

您对上述问题的回答决定了您的问题的答案。如果是同一天、同一个月和同一年,则使用 NSDateComponents 提取这三个值并进行比较。如果您的意思是在 24 小时内,那么您可以使用日期方法-timeIntervalSinceDate:来确定日期之间的秒数。

如果你的意思是别的,请澄清。

于 2010-07-03T14:25:09.640 回答
1

快速回答

如果您不想使用第三方,我使用AFDateHelper 。只需检查源代码以查找dateAtStartOfDay()dateAtEndOfDay()

然后它是微风。

NSPredicate(format: "pickup_time > %@ && pickup_time < %@",NSDate().dateAtStartOfDay(),NSDate().dateAtEndOfDay())

于 2015-11-04T15:59:48.133 回答
0

几个你可能想尝试的事情。

  1. 将另一个整数属性dueDateYYYMMDD 添加到您的实体。使用 NSDateFormatter 将 NSDate 转换为 YYYYMMDD 字符串,然后使用 NSString integerValue 生成 dueDateYYYYMMDD。
  2. 在 [NSDate date] 上使用 NSDateFormatter 以 YYYYMMDD 格式生成“今天”,并使用 [NSString integerValue] 将“今天”作为整数 (todayInt) 获得。现在您的谓词可以很容易地构造来比较dueDateYYYYMMDD == todayInt。

整数值的比较比字符串更有效。

于 2010-07-02T19:34:09.603 回答
0

您可能会发现 Erica Sadun NSDate 实用程序对这类事情很有帮助。

很多非常方便的点点滴滴。一探究竟。

https://github.com/erica/NSDate-Extensions

马特

于 2012-02-29T00:57:20.487 回答