Search code examples
iosobjective-cios8nsdateformatter

sorting the NSArray using date format


but I didn't got the current output, I want to sort the array by using date format,my array date is in string format.that data is like this

( Fri,10 Apr,16:59 pm, Fri,10 Apr,18:37 pm, Fri,10 Apr,22:28 pm, Sat,11 Apr,16:59 pm )

so I want sort this data correctly


Solution

  • Try this -

    NSString *str1 = @"Fri,10 Apr,16:59";
    NSString *str2 = @"Fri,10 Apr,14:37";
    NSString *str3 = @"Sat,11 Apr,16:59";    
    
    NSArray *arr = [NSArray arrayWithObjects:str1, str2, str3, nil];
    arr = [arr sortedArrayUsingFunction:dateSort context:nil];
    
    //The date sort function
    NSComparisonResult dateSort(NSString *s1, NSString *s2, void *context) {
    
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"EE,dd MMM,HH:mm"];
    
        NSDate *d1 = [formatter dateFromString:s1];
        NSDate *d2 = [formatter dateFromString:s2];
    
        return [d1 compare:d2]; // ascending order
        return [d2 compare:d1]; // descending order
    }
    

    See result screenshot- enter image description here