我有一个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
}
}
答案 0 :(得分:1)
我认为我不太明白你想做什么,但我会试一试。
假设您有2个NSDate
,请将其称为date1
和date2
,并且您要标记NSDate
数组中的所有条目,将其命名为arrayOfDates
,在2 NSDate
之间,YES
,并将NO
或boolValuesOfDates
值存储在另一个数组中,称之为- (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
否则。希望有帮助!