迭代NSArray填充日期并与另一个NSArray比较

时间:2011-08-28 01:31:08

标签: iphone objective-c for-loop nsdate

我有一个NSArray填充了NSDate格式的约30个日期,

我需要做的是从中创建另一个数组,其中包含从第一个日期到最后一个日期的所有日期的布尔值。

ex Array 1 1/1/11 11年3月1日 11年5月1日

数组2 是 没有 是 没有 是

我需要这个用于tapku库日历

这是我到目前为止,但我永远不会改变

int i=0;
for (NSDate *date = [[startingDate copy] autorelease]; [date compare: endingDate] < 0;
     date = [date dateByAddingTimeInterval:24 * 60 * 60] ) {
    NSLog( @"%@ in [%@,%@]", date, startingDate, endingDate );

    int day1 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:[eventDates objectAtIndex:i]];
    int day2 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:date];

    if(day1-day2==0) {
        NSLog(@"yeh");
        i=i+1;
        //add yes to array2

    } else {
        NSLog(@"nah");
        NSLog(@"%i",i);
        //add no to array 2
    }
}

1 个答案:

答案 0 :(得分:1)

我认为我不太明白你想做什么,但我会试一试。

假设您有2个NSDate,请将其称为date1date2,并且您要标记NSDate数组中的所有条目,将其命名为arrayOfDates,在2 NSDate之间,YES,并将NOboolValuesOfDates值存储在另一个数组中,称之为- (void)compareDatesOfArrayFromDate:(NSDate *)date1 toDate:(NSDate *)date2; { NSDate * firstDate; NSDate * secondDate; if([date1 timeIntervalSinceDate:date2] >= 0){ firstDate = date2; secondDate = date1; } else{ firstDate = date1; secondDate = date2; } if(boolValuesOfDates != nil) [boolValuesOfDates release]; // Release the YES/NO array for the new values. boolValuesOfDates = [[NSMutableArray alloc] initWithCapacity:[arrayOfDates count]]; BOOL isInbetweenDates; NSDate * curDate; for(int i = 0; i < [arrayOfDates count]; i++){ curDate = [arrayOfDates objectAtIndex:i]; isInbetweenDates = NO; if([curDate timeIntervalSinceDate:firstDate] >= 0){ if([curDate timeIntervalSinceDate:secondDate] <= 0){ isInbetweenDates = YES; } } [boolValuesOfDates addObject:[NSNumber numberWithBool:isInbetweenDates]]; } } 。然后尝试这个方法:

NSDate

此方法检查输入的NSDate的2的顺序,然后比较数组中的YES,如果它们介于两者之间,则用{{1}标记它们},或者NO否则。希望有帮助!