我有一个核心数据表视图,我正在比较日期。我目前使用的方法是:if ([todayDate compare: [NSDate date]]==NSOrderedAscending)
. 这工作得很好但很慢。不过,我不需要知道时间上的差异。任何帮助深表感谢!
问问题
777 次
4 回答
1
我真的认为,NSDates 方法isEqualToDate:
就是您正在寻找的。在我看来,这是回答您问题的 Apple 方式:
NSDate *date1 = ...;
NSDate *date2 = ...;
BOOL datesAreEqual = [date1 isEqualToDate:date2];
于 2012-09-09T08:04:59.877 回答
1
一种选择可能是不实际创建新NSDate
对象,而是使用时间间隔进行比较。不知道性能如何,但可能值得一试。
if ([todayDate timeIntervalSinceReferenceDate] > [NSDate timeIntervalSinceReferenceDate]) {
...
}
于 2012-09-09T08:19:06.177 回答
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 );
于 2012-09-09T08:47:05.813 回答
0
我没有测量它,但你可能想尝试:
NSTimeInterval i = [todayDate timeIntervalSinceNow];
其中结果 ( i
) 可能是正数或负数。
你也可以试试CFDateCompare
。
或者您可能想考虑另一种表示数据库中时间点的方法——例如 a CFTimeInterval
(adouble
表示距公共参考时间的秒数)。
于 2012-09-09T08:25:30.497 回答