有一个名为Place的对象。用户可以添加到收藏夹的位置,用户也可以从收藏夹中删除位置。一旦用户添加到收藏夹我在数据库上保存日期。当用户从收藏夹中删除时,我从数据库中检索日期。并将特定对象与对象数组进行比较。但是在比较同一个对象时它会给出NSOrderedAscending。
NSDate *date1 = obj1.date; // same date
NSDate *date2 = obj2.date; // same date
// compare using date
NSComparisonResult result = [date2 compare:date1];
任何帮助都会受到赞赏。感谢。
答案 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]);
将日期中的时间用于将其舍入到最接近的秒,然后比较这些值。