美文网首页
数组按时间排序

数组按时间排序

作者: ios_暗夜行者 | 来源:发表于2021-04-08 10:23 被阅读0次

    最近遇到一个按时间排序评论数组的问题,参考网上资料,亲测以下方法可行。好记性不如烂笔头,记录以下!

    #pragma mark+++ 排序 +++

    - (NSArray*)arrayWithTimeSeq:(NSArray*)inputData{

        //模型中time为时间戳

        for(inti =0; i < inputData.count; i ++) {

            NSDictionary*model = inputData[i];

            NSLog(@"排序前 == %@", model[@"createDate"]);

        }

        NSLog(@"\n");

        // 时间戳数组(存放时间NSDate对象用于排序)

        NSMutableArray *timeArr = [[NSMutableArray alloc]init];

        // 时间戳-对象字典,将对象和其对应的时间戳字符串存入字典(哈希表)

        NSMutableDictionary *dateKeyArr = [[NSMutableDictionary alloc]init];

        // 时间戳取出,并格式化处理

        for(NSDictionary*modelininputData) {

            // 1.时间戳转成时间对象用于排序

            // iOS 生成的时间戳是10位

            NSDateFormatter*dateFormatter = [[NSDateFormatteralloc]init];

            [dateFormattersetDateFormat:@"yyyy-MM-dd HH:mm:ss"];

            [dateFormattersetTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];//解决8小时时间差问题

            NSDate*date = [dateFormatterdateFromString:model[@"createDate"]];

            [timeArraddObject:date];

            // 2.时间戳转成时间戳字符串作为key,制作哈希表=

            [dateKeyArrsetObject:modelforKey:model[@"createDate"]];

        }

        // 3.将时间NSDate数组排序

        NSArray*orderedDateArray = [timeArrsortedArrayUsingComparator:^NSComparisonResult(NSDate*date1,NSDate*date2) {

            // 排序,最近的时间靠后

            return[date1compare:date2];

        }];

        // 根据排序好的时间数组对号入座将对象按时间排序

        // 临时数组,保存排序后的对象数组

        NSMutableArray*sortedAccounts = [[NSMutableArrayalloc]init];

        NSDate*datekey = [[NSDatealloc]init];

        for(inti =0; i

        {

            datekey = orderedDateArray[i];

            // 日期对象转换成时间戳字符串key

            NSDateFormatter*dateFormatter = [[NSDateFormatteralloc]init];

            [dateFormattersetDateFormat:@"yyyy-MM-dd HH:mm:ss"];

            [dateFormattersetTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];//解决8小时时间差问题

            NSString*strDate = [dateFormatterstringFromDate:datekey];

            // 根据时间戳字符串key取对应的对象(哈希表)

            [sortedAccountsaddObject:[dateKeyArrobjectForKey:strDate]];

        }

        for(intj =0; j < sortedAccounts.count; j ++)

        {

            NSDictionary*model = sortedAccounts[j];

            NSLog(@"排序后 == %@", model[@"createDate"]);

        }

        returnsortedAccounts;

    }

    相关文章

      网友评论

          本文标题:数组按时间排序

          本文链接:https://www.haomeiwen.com/subject/vapmkltx.html