我有一个核心数据表视图,我比较日期。我目前使用的方法是:if ([todayDate compare: [NSDate date]]==NSOrderedAscending)
。这工作完美但缓慢。我不需要知道时间的不同。任何帮助深表感谢!比较NSDate与[NSDate日期]最快的方法?
回答
我真的认为,NSDates方法isEqualToDate:
是你正在寻找。在我看来,是苹果的方式来回答你的问题:
NSDate *date1 = ...;
NSDate *date2 = ...;
BOOL datesAreEqual = [date1 isEqualToDate:date2];
嘿,感谢您的帮助,但它只告诉我日期是否等于或小于或大于。尽管谢谢您的帮助! – iDeveloper
您应该阅读文档中的“比较日期”部分:http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html In你需要知道的情况下我会使用' - (NSDate *)earlierDate:(NSDate *)anotherDate' –
一种选择是不实际创建一个新的NSDate
对象,但使用时间间隔进行比较。不知道性能,但可能值得一试。
if ([todayDate timeIntervalSinceReferenceDate] > [NSDate timeIntervalSinceReferenceDate]) {
...
}
我没有测量它,但你可能也想尝试:
NSTimeInterval i = [todayDate timeIntervalSinceNow];
其中结果(i
)可以是正的或负的。
您也可以尝试CFDateCompare
。
或者您可能想要考虑另一种表示数据库中某个时间点的方式 - 例如CFTimeInterval
(代表公共参考时间的秒数double
)。
你应该还记得在一个局部变量的当前日期或当前时间戳:
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);
- 1. 比较NSDate [NSDate日期]
- 2. NSDate,比较两个日期
- 3. 两个NSDate之间的日期比较
- 4. 比较日期的问题 - NSDate
- 5. Swift NSDate比较
- 6. NSDate比较
- 7. 比较NSDate对象
- 8. 比较的NSDate只有在年月日
- 9. 与比较的NSDate [NSMutableArray的objectatIndex:我]
- 10. 之间比较2 NSDate的
- 11. 的NSDate比较失败
- 12. 比较AM和PM(NSDate的)
- 13. NSDate到MySQL日期
- 14. NSString日期到NSDate
- 15. 比较两个NSDate失败
- 16. 核心数据NSDate比较
- 17. 比较NSDate从互联网上下载的日期
- 18. 如何区分日/夜与[NSDate日期]?
- 19. NSDate显示错误的日期与NSTimezone
- 20. HTTP日期到NSDate的
- 21. 转换NSDate到日期
- 22. NSDate延迟日期变更
- 23. NSDate - 设置未来日期
- 24. 比较NSMutableArray的NSMutableDictionaires的NSDate值
- 25. NSdate星期日重复日期
- 26. NSDate比较显示错误的值?
- 27. NSDate的比较都不尽如人意
- 28. 比较NSDate的某些组件?
- 29. 比较NSDate的当天或前一天
- 30. 的NSDate从一个日期组件和从其他的NSDate
你能更准确地说明什么是慢吗?它是'[NSDate date]'还是比较?你如何衡量缓慢? - 如果你需要'[NSDate date]'在一个包含许多元素的循环中,你只需要计算一次,这可能已经有所帮助了。 –