如何在ios中按升序排序日期数组

Hil*_*laj 2 objective-c nsdate ios

我有一个NSMutableArray,其中包含字符串格式的日期.在这里,我需要按日期的升序排序该数组.我用了强文

 NSSortDescriptor *descriptor=[[NSSortDescriptor alloc] initWithKey:@"self" ascending:YES];
 NSArray *descriptors=[NSArray arrayWithObject: descriptor];
 NSArray *reverseOrder=[dateArray sortedArrayUsingDescriptors:descriptors];
Run Code Online (Sandbox Code Playgroud)

但它只按日期和月份的升序排序日期.年份不予考虑.请帮我.例如,Array包含

 03/09/2017, 03/06/2016, 01/06/2016,01/04/2016 and 03/01/2017.
Run Code Online (Sandbox Code Playgroud)

使用上面的代码行后,Array包含like,

 01/04/2018, 01/06/2016, 03/01/2017, 03/06/2016, 03/09/2016
Run Code Online (Sandbox Code Playgroud)

Nir*_*v D 6

你需要sortedArrayUsingComparator像这样使用String数组来排序日期.

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MM/dd/yyyy"];
NSArray *sortedArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
    NSDate *d1 = [df dateFromString: obj1];
    NSDate *d2 = [df dateFromString: obj2];
    return [d1 compare: d2];
}];
Run Code Online (Sandbox Code Playgroud)

注意:设置日期的格式根据您的日期,很难从您的示例中预测日期格式,这就是我使用过的原因MM/dd/yyyy,如果您的日期包含格式,dd/MM/yyyy则使用它.