【问题标题】:How to sort date @"dd/MM/yyyy hh:mm a" with respect to date and time in decreasing order如何按日期和时间按降序对日期@“dd/MM/yyyy hh:mm a”进行排序
【发布时间】:2017-03-05 07:19:15
【问题描述】:

如何对包含日期和时间的数组进行排序,我需要对相同的日期进行排序,如果我有多个相同的日期,我需要根据时间按降序对其进行排序,它将以所有的更衣顺序显示条目。

    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 = "";
        },
}

【问题讨论】:

  • 任何尝试,你尝试了什么?请发布代码sn-ps
  • data 的对象似乎是一个数组,而不是字典。您需要将日期字符串映射到 NSDate 才能对数组进行排序。
  • 我正在成功地对日期进行排序: NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"dateAndTime" 升序:NO]; arr=[arr sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
  • 我遇到问题的时间:(
  • @kumar 什么是“装扮顺序”?

标签: objective-c sorting nsdate nsdateformatter nscalendar


【解决方案1】:

试试这个

- (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);
}

【讨论】:

  • 谢谢@schmidt9
  • 我正在排序,但时间不正确@schmidt9
  • @kumar 再次说明日期和时间需要什么排序顺序?
  • 我需要排序顺序:LIKE。 04/03/2017 09:52 PM 04/03/2017 05:36 PM 03/03/2017 06:48 PM 03/03/2017 04:48 PM 02/03/2017 09:36 PM 02/03/2017下午 06:54
  • @kumar 好的我编辑了我的答案,它完全按照这个顺序输出,我又添加了一条记录来检查 AM 案例
猜你喜欢
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
相关资源
最近更新 更多