检查日期是否在范围之间

bar*_*kyo 1 objective-c ios

我有一个使用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];

    }
Run Code Online (Sandbox Code Playgroud)

它的作用是改变newCurrentDate之前的每个日期的图像,而不是之前的7.任何人都可以看到我做错了什么?

继承人数组的初始化:

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]];
    }
Run Code Online (Sandbox Code Playgroud)

小智 5

您不需要使用dateFormatter.

if([dateInQuestion compare:newCurrentDate] == NSOrderedAscending && [dateInQuestion compare:sevenDaysBeforeCurrent] == NSOrderedDescending){
    // do something
}
Run Code Online (Sandbox Code Playgroud)