1

UICollectionViewを使用してカスタムカレンダーを設定し、30日までの日付を保持する配列を持っています。私がやろうとしているのは、値が現在の日付とその7日前の間にあるかどうかを調べることです。もしそうなら、私は何かをするためにそれが必要です。私は自分が間違っていることを理解できません。これが私がこれまでに持っているものです:

    NSDateFormatter *df = [NSDateFormatter new];
    [df setDateFormat:@"MM-dd-yy"];
    NSdate *date = [NSDate date];
    NSDate *newCurrentDate = [date dateByAddingTimeInterval:+14*24*60*60];
    NSDate *sevenDaysBeforeCurrent = [date dateByAddingTimeInterval:-7*24*60*60];




    if([[df stringFromDate:[days objectAtIndex:indexPath.item]] compare:[df stringFromDate:newCurrentDate]] == NSOrderedAscending && [[df stringFromDate:[days objectAtIndex:indexPath.item]] compare:[df stringFromDate:sevenDaysBeforeCurrent]] == NSOrderedDescending )
    {

            UIImage *buttonImage = [UIImage imageNamed:@"dates.png"];
            [myButton setBackgroundImage:buttonImage forState:UIControlStateNormal];

    }

それは、前の7だけでなく、newCurrentDateより前のすべての日付の画像を変更することです。誰かが私が間違っていることを見ることができますか?

配列の初期化は次のとおりです。

myDays = [[NSMutableArray alloc] init];
    NSCalendar *cal = [NSCalendar autoupdatingCurrentCalendar];
    NSDate *today = [NSDate date];
    date = [NSDate date];




    for (int i = 0; i < 31; i++)
    {
        NSDateComponents *comps = [[NSDateComponents alloc]init];
        [comps setDay:i];
        [myDays addObject:[cal dateByAddingComponents:comps toDate:today options:0]];
    }
4

2 に答える 2

5

dateFormatterを使用する必要はありません。

if([dateInQuestion compare:newCurrentDate] == NSOrderedAscending && [dateInQuestion compare:sevenDaysBeforeCurrent] == NSOrderedDescending){
    // do something
}
于 2013-02-22T22:33:06.490 に答える
1

これらの線に沿って何かを試してください:

NSDate *currentDate = [NSDate date];
NSDate *dateSevenDaysPrior = [currentDate dateByAddingTimeInterval:-(7 * 24 * 60 * 60)];
NSDate *someDate = [currentDate dateByAddingTimeInterval:-(3 * 24 * 60 * 60)]; // adjust as you like

if (([dateSevenDaysPrior compare:someDate] != NSOrderedDescending) &&
    ([someDate compare:currentDate] != NSOrderedDescending))
{
    NSLog(@"date is in range");
}
else
{
    NSLog(@"date is not in range");
}

これは、提供しているもの(someDateこの例では何を表しているか)が実際にはNSDateのインスタンスであることを前提としています。

于 2013-02-22T22:13:09.127 に答える