我已经尝试了多种方法,并在此网站上尝试了一些建议,但是如何确定CoreData属性“dueDate”是否等于“今天”,我知道NSDate也是一个特定的时间,但我想要谓词如果是同一天/月/年,则返回,无论当天的时间是多少。有什么建议吗?
答案 0 :(得分: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];
}
答案 1 :(得分:2)
通过使用NSDateComonents和NSCalendar修复此问题。
刚刚从原始NSDate创建了日/月/年的NSDateComponents,然后使用dateFromComponents将其重新创建为日期。
这导致它成为当天的开始,然后我使用上面的方法创建了另一个日期,这是“明天”的开始并使用了&gt;和&lt;看它是不是“今天”。无论如何,谢谢你的帮助。
答案 2 :(得分:1)
今天的概念很棘手,因为你的意思是什么?这就是为什么它不简单。你的意思是在同一天,一个月和一年,不管时区如何?你的意思是在同一个24小时内吗?在过去的24小时内?它会变得复杂。
您对上述问题的回答决定了您问题的答案。如果是同一天,月和年,则使用NSDateComponents提取这三个值并进行比较。如果您的意思是在24小时内,那么您可以使用日期方法-timeIntervalSinceDate:
来确定日期之间的秒数。
如果您有其他意思,请澄清。
答案 3 :(得分:1)
我使用AFDateHelper
如果您不想使用第三方。只需查看来源,即可查找dateAtStartOfDay()
和dateAtEndOfDay()
然后轻而易举。
NSPredicate(format: "pickup_time > %@ && pickup_time < %@",NSDate().dateAtStartOfDay(),NSDate().dateAtEndOfDay())
答案 4 :(得分:0)
你可能想要尝试的事情。
整数值的比较比字符串更有效。
答案 5 :(得分:0)