在nsmutablearray单独的未来date

我有一个可变数组,我只有过去的date,当前date和将来的date。 我必须将未来的date和存储分隔到另一个数组中。 你可以帮我吗。

这是我的数组:

uniqueItems( "2015-03-01", "2015-02-28", "2015-02-22", "2015-02-21", "2015-02-20", "2015-02-15", "2015-02-14", "2015-02-13", "2015-02-08", "2015-02-07", "2015-02-01", "2015-01-31", "2015-01-30", "2015-01-25", "2015-01-24", "2015-01-18", "2015-01-17", "2015-01-16", "2015-01-11", "2015-01-10", "2014-12-07" 

我试过这个编码,但是没有工作。

 NSDate *currentDate = [NSDate date]; NSDate* dateAdded=(NSDate*)[uniqueItems objectAtIndex:0]; double min = [currentDate timeIntervalSinceDate:dateAdded]; int minIndex = 0; for (int i = 1; i < [uniqueItems count]; ++i) { double currentmin = [currentDate timeIntervalSinceDate:[uniqueItems objectAtIndex:i]]; if (currentmin < min) { min = currentmin; minIndex = i;}} 

你可以使用NSPredicate块。 你的数组不包含NSDate对象,所以我们需要将其转换成NSDate ,然后与[NSDate date]

 NSPredicate *findFutureDates = [NSPredicate predicateWithBlock: ^BOOL(id obj, NSDictionary *bind){ NSDateFormatter *df = [[NSDateFormatter alloc]init]; [df setDateFormat:@"yyyy-MM-dd"]; [df setTimeZone:[NSTimeZone systemTimeZone]]; NSDate *dd = [df dateFromString:(NSString *)obj ]; return ([[NSDate date] compare:dd] == NSOrderedAscending); }]; NSArray *arrFutureDates = [yourArray filteredArrayUsingPredicate: findFutureDates]; NSLog(@"%@",arrFutureDates); 

如果你通过NSOrderedAscending会给你未来的date,如果你通过NSOrderedDescending会给你过去的date。

 NSDate *currentDate = [NSDate date]; NSDate *date; int offset = 0; NSMutableArray *futureArray = [[NSMutableArray alloc] init]; for (int i = 1; i < [uniqueItems count]; ++i) { date = [uniqueItems objectAtIndex:i];//TODO: Convert to NSDate offset = [currentDate timeIntervalSinceDate:date]; if (offset < 0) { [futureArray addObject:[uniqueItems objectAtIndex:i]]; } } 

这是一个想法。 对不起,我正在编写记事本没有testing。

你的数组是string格式而不是NSDate对象。 您可以将string转换为nsdate

 NSString *dateString = @"2010-02-13"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSDate *dateFromString = [[NSDate alloc] init]; dateFromString = [dateFormatter dateFromString:dateString]; 

然后你可以做你的支票。