我有一个对象数组,每个对象都有NSDate
属性,名为" date"。
如何找到与当前时间最接近的对象?
答案 0 :(得分:4)
这将使nearestObject与具有最接近日期的对象保持一致。如果你不想要过去的日期,那么摆脱ABS并确保间隔为正。
MyObjectType *closestObject;
NSTimeInterval closestInterval = DBL_MAX;
for (MyObjectType *myObject in array) {
NSTimeInterval interval = ABS([myObject.date timeIntervalSinceDate:[NSDate date]]);
if (interval < closestInterval) {
closestInterval = interval;
closestObject = myObject;
}
}
答案 1 :(得分:1)
- (NSDate *)closestDateFromArray:(NSArray *)dateArray
{
double smallestDifference = DBL_MAX; // thanks bgfriend0
NSDate *closestDate = nil;
for (NSDate *date in dateArray) {
// suggested by Henri Normak
if ([date timeIntervalSinceNow] <= someThresholdValue) {
return date;
// you could set some value that is a "good enough" value.
// i.e. if the date IS NOW then nothing is going to be closer.
}
if (ABS([date timeIntervalSinceNow]) < smallestDifference) {
smallestDifference = ABS([date timeIntervalSinceNow]);
closestDate = date;
}
}
return closestDate;
}
这样的事情应该可以解决问题。
如果数组是具有日期属性的对象数组,那么您可以完全相同,只需从对象中获取日期以进行比较。