Per me questo è funzionante.
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:[NSDate date]];
//create a date with these components
NSDate *startDate = [calendar dateFromComponents:components];
[components setMonth:0];
[components setDay:0]; //reset the other components
[components setYear:0]; //reset the other components
NSDate *endDate = [calendar dateByAddingComponents:components toDate:startDate options:0];
startDate = [NSDate date];
endDate = [startDate dateByAddingTimeInterval:-(7 * 24 * 60 * 60)];//change here
NSString *startTimeStamp = [[NSNumber numberWithInt:floor([endDate timeIntervalSince1970])] stringValue];
NSString *endTimeStamp = [[NSNumber numberWithInt:floor([startDate timeIntervalSince1970])] stringValue];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"((paidDate1 >= %@) AND (paidDate1 < %@))",startTimeStamp,endTimeStamp];
NSLog(@"predicate is %@",predicate);
totalArr = [completeArray filteredArrayUsingPredicate:predicate];
[self filterAndPopulateDataBasedonIndex];
[self.tableviewObj reloadData];
NSLog(@"result is %@",totalArr);
Ho filtrato l'array dalla data corrente a 7 giorni indietro. Voglio dire, sto ricevendo dati di una settimana dalla data corrente. Questo dovrebbe funzionare.
Nota: sto convertendo la data che viene con milli secondi per 1000 e il confronto dopo. Fammi sapere se hai bisogno di chiarezza.
fonte
2015-11-07 10:51:31
cosa succede se abbiamo solo una data? – Wasim
Sembra che tu possa usare '=='. Anche se stai cercando per giorno, ricorda che NSDate è una data e ora - potresti voler usare un intervallo da mezzanotte a mezzanotte. – jlstrecker
Esempio su come impostare anche startDate e endDate, vedere la mia risposta sotto –