2017-11-11 190 views
1

請幫我...如何比較/排序日期與目標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

回答

1

@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