我有一个核心数据表视图,我正在比较日期。我目前使用的方法是:if ([todayDate compare: [NSDate date]]==NSOrderedAscending)
。这完美但速度慢。我不需要知道时间上的差异。非常感谢任何帮助!
答案 0 :(得分:1)
我真的认为,NSDates方法isEqualToDate:
就是您要搜索的内容。我似乎是回答你问题的Apple方式:
NSDate *date1 = ...;
NSDate *date2 = ...;
BOOL datesAreEqual = [date1 isEqualToDate:date2];
答案 1 :(得分:1)
一个选项可能是不实际创建新的NSDate
对象,而是使用时间间隔进行比较。不知道性能,但可能值得一试。
if ([todayDate timeIntervalSinceReferenceDate] > [NSDate timeIntervalSinceReferenceDate]) {
...
}
答案 2 :(得分:1)
您应该记住本地变量中的当前日期或当前时间戳:
NSTimeInterval current = [NSDate timeIntervalSinceReferenceDate];
稍后使用此值进行所有比较:
myTimestamp = [myDate timeIntervalSinceReferenceDate]
if (myTimestamp == current) {
return NSOrderedSame;
} else if (myTimestamp > current) {
return NSOrderedDescending;
} else {
return NSOrderedAscending;
}
或者更快,使用C函数:
// Get the current calendar time as a time_t object.
time_t time ( time_t * timer );
// Return difference between two times
double difftime ( time_t time2, time_t time1 );
答案 3 :(得分:0)
我没有测量过,但您可能想尝试:
NSTimeInterval i = [todayDate timeIntervalSinceNow];
结果(i
)可能是正面的还是负面的。
您也可以尝试CFDateCompare
。
或者您可能想要考虑另一种表示数据库中某个时间点的方法 - 例如CFTimeInterval
(表示公共参考时间的秒数的double
)。< / p>