Search code examples
objective-csortingnsdatensdateformatternscalendar

How to sort date @"dd/MM/yyyy hh:mm a" with respect to date and time in decreasing order


how to sort this Array contains date and time, i need to sort for same dates ,if i have same dates multiple entries i need to sort it in decreasing order based on the time and it will be shown in dressing order all the entries.

    data= {
     {
            dateAndTime = "04/03/2017 09:52 PM";
            deviceImage = "";
            dialOrReceive = 0;
            number = "+918839752179";
            profilePhoto = "";
        },
            {
            dateAndTime = "02/03/2017 06:54 PM";
            deviceImage = "";
            deviceImage = "";
            dialOrReceive = 0;
            number = "+918839752179";
            profilePhoto = "";
        },
            {
            dateAndTime = "04/03/2017 05:36 PM";
            deviceImage = "";
            dialOrReceive = 0;
            number = "+918839752179";
            profilePhoto = "";
        },
            {
            dateAndTime = "03/03/2017 04:48 PM";
            deviceImage = "";
            dialOrReceive = 0;
            number = "+918839752179";
            profilePhoto = "";
        }, {
            dateAndTime = "03/03/2017 06:48 PM";
            deviceImage = "";
            dialOrReceive = 0;
            number = "+918839752179";
            profilePhoto = "";
        },{
            dateAndTime = "02/03/2017 09:36 PM";
            deviceImage = "";
            dialOrReceive = 0;
            number = "+918839752179";
            profilePhoto = "";
        },
}

Solution

  • Try this

    - (void)sortDict {
    
        NSDictionary *dict = @{
                               @"data" : @[@{
                                               @"dateAndTime" : @"04/03/2017 09:52 PM",
                                               @"deviceImage" : @"",
                                               @"dialOrReceive" : @0,
                                               @"number" : @"+918839752179",
                                               @"profilePhoto" : @""
                                               },
                                           @{
                                               @"dateAndTime" : @"02/03/2017 06:54 PM",
                                               @"deviceImage" : @"",
                                               @"dialOrReceive" : @0,
                                               @"number" : @"+918839752179",
                                               @"profilePhoto" : @""
                                               },
                                           @{
                                               @"dateAndTime" : @"04/03/2017 05:36 PM",
                                               @"deviceImage" : @"",
                                               @"dialOrReceive" : @0,
                                               @"number" : @"+918839752179",
                                               @"profilePhoto" : @""
                                               },
                                           @{
                                               @"dateAndTime" : @"03/03/2017 04:48 PM",
                                               @"deviceImage" : @"",
                                               @"dialOrReceive" : @0,
                                               @"number" : @"+918839752179",
                                               @"profilePhoto" : @""
                                               },
                                           @{
                                               @"dateAndTime" : @"03/03/2017 06:48 PM",
                                               @"deviceImage" : @"",
                                               @"dialOrReceive" : @0,
                                               @"number" : @"+918839752179",
                                               @"profilePhoto" : @""
                                               },
                                           @{
                                               @"dateAndTime" : @"02/03/2017 09:36 PM",
                                               @"deviceImage" : @"",
                                               @"dialOrReceive" : @0,
                                               @"number" : @"+918839752179",
                                               @"profilePhoto" : @""
                                               },
                                           @{
                                               @"dateAndTime" : @"02/03/2017 07:36 AM",
                                               @"deviceImage" : @"",
                                               @"dialOrReceive" : @0,
                                               @"number" : @"+918839752179",
                                               @"profilePhoto" : @""
                                               }
                                           ]
                                };
    
        NSDateFormatter *formatter = [NSDateFormatter new];
        formatter.dateFormat = @"dd/MM/yyyy hh:mm a";
    
        NSArray *arr = [dict objectForKey:@"data"];
    
        arr = [arr sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
    
            NSDate *date1 = [formatter dateFromString:[obj1 objectForKey:@"dateAndTime"]];
            NSDate *date2 = [formatter dateFromString:[obj2 objectForKey:@"dateAndTime"]];
    
            return [date2 compare:date1];
        }];
    
        NSLog(@"%@", arr);
    }