如何比较/排序日期与目标C日期排列

如何比较/排序日期与目标C日期排列

问题描述:

请帮我...如何比较/排序日期与目标C日期排列

我存储当前系统日期中的变量myDatemyDate = 11 Nov 2017

现在我想最后一个/上n日期从myDate

例如: -n = 7

myDate - 7 => 05 Nov 17

现在,这里我得到日期1(currentDate) = 11 November 17 & & date2的(previous n date) = 05 November 17

我从我的核心数据,这给我取的数据这组日期:

(
    "11 November 2017", 
    "10 November 2017", 
    "8 November 2017", 
    "5 November 2017", 
    "3 November 2017", 
    "1 November 2017" 
) 

现在我要存/取日期date1date2

在两者之间

所以最后我应该得到这个数组:

(
     "11 November 2017", 
     "10 November 2017", 
     "8 November 2017", 
     "5 November 2017" 
) 

我怎么能做到这一点,请帮助我。

+0

请帮我... – Aadi

+0

是日期'NSString'或'NSDate'实例? – vadian

+0

日期在NSString – Aadi

@Aadi试试这个..

NSMutableArray *arrOutput = [[NSMutableArray alloc]init]; 
    NSMutableArray *arrDates = [[NSMutableArray alloc]initWithObjects:@"11 November 2017", 
           @"10 November 2017", 
           @"8 November 2017", 
           @"5 November 2017", 
           @"3 November 2017", 
           @"1 November 2017", nil]; 
    NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
    [df setDateFormat:@"dd MMMM yyyy"]; 
    [df setTimeZone:[NSTimeZone localTimeZone]]; 
    NSString *strCurrentDate = [df stringFromDate:[NSDate date]]; 
    NSDate *currentDate = [df dateFromString:strCurrentDate]; 

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 

    NSDateComponents *dayComponent = [[NSDateComponents alloc] init]; 
    dayComponent.day = -7; 
    NSDate *lastWeek = [gregorian dateByAddingComponents:dayComponent toDate:[NSDate date] options:0]; 

    for(int i=0; i<arrDates.count; i++) 
    { 
     NSDate *dateFormArray = [df dateFromString:[arrDates objectAtIndex:i]]; 
     if ([dateFormArray compare:currentDate] == NSOrderedAscending && [dateFormArray compare:lastWeek] != NSOrderedAscending) 
     { 
      [arrOutput addObject:[arrDates objectAtIndex:i]]; 
     } 
    } 
    NSLog(@"current date = %@",strCurrentDate); 
    NSLog(@"output = %@",arrOutput); 
+0

谢谢@Nirav,您的答案不按我的要求工作。它将每个日期打印为前一天的日期。假设currentDate是17年11月11日,那么它会打印currentDate = 11 Nov 17.同样的情况与dateFromArray。 dateFrom数组应该只有currentDate && lastWeek之间的日期。但它从myDate数组中打印所有日期。 – Aadi

+0

@Aadi假设当前日期是11月17日,那么根据你的数组输出将是11月5日,8日和10日..对吧? –

+0

你刚接近它,请尝试一下。 – Aadi