NSComparisonResult失败了同样的NSDate

时间:2015-04-17 12:49:35

标签: ios

有一个名为Place的对象。用户可以添加到收藏夹的位置,用户也可以从收藏夹中删除位置。一旦用户添加到收藏夹我在数据库上保存日期。当用户从收藏夹中删除时,我从数据库中检索日期。并将特定对象与对象数组进行比较。但是在比较同一个对象时它会给出NSOrderedAscending。

NSDate *date1 = obj1.date; // same date
NSDate *date2 = obj2.date; // same date
// compare using date
NSComparisonResult result = [date2 compare:date1];

任何帮助都会受到赞赏。感谢。

3 个答案:

答案 0 :(得分:1)

尝试这样做:

-(NSDate *)clearSecondsFromDate:(NSDate *)date 
{
NSTimeInterval timeInterval = [date timeIntervalSinceReferenceDate];
timeInterval -= fmod(timeInterval, 60);
NSDate *clearDate = [NSDate dateWithTimeIntervalSinceReferenceDate:: timeInterval];
return clearDate;
}

答案 1 :(得分:0)

如果你想比较两个日期相当于同一秒,那么得到自某个纪元以来的秒数并将小数部分四舍五入:

BOOL same = round([date1 timeIntervalSince1970]) ==
            round([date2 timeIntervalSince1970]);

或转换为整数:

BOOL same = (unsigned long)[date1 timeIntervalSince1970] ==
            (unsigned long)[date2 timeIntervalSince1970];

(如果您愿意,也可以使用[NSDate timeIntervalSinceReferenceDate]。)

答案 2 :(得分:-1)

NSDate不仅包含日期和秒,它的分辨率优于微秒。你的NSDates可能只有几分之一秒。尝试记录[date1 timeIntervalSinceDate:date2]。

所以很可能你的日期不一样。如果您要对日期进行排序,并且希望将相同秒内的日期视为相等,请执行

double seconds1 = round ([date1 timeIntervalSinceReferenceDate]);
double seconds2 = round ([date2 timeIntervalSinceReferenceDate]);

将日期中的时间用于将其舍入到最接近的秒,然后比较这些值。