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

数组按时间排序

作者: 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;

}

相关文章

  • PHP数组常用方法

    1. 数组的遍历 2. 数组排序 sort 与 rsort 按数组的值排序 asort与arsort 按数组的键排...

  • JS实现数组排序的方法有哪些?

    数组排序在日常编程中用到的其实还是比较多的,比如把一组数据按时间排序,按首字母排序,按大小排序等等,那么就让我们一...

  • JS实现数组排序的方法有哪些?

    数组排序在日常编程中用到的其实还是比较多的,比如把一组数据按时间排序,按首字母排序,按大小排序等等,那么就让我们一...

  • 数组的方法(三)

    Array.sort() 数组排序(默认按字符编码(ASCII)排序) Array.push() 从数组尾部添加元...

  • js中对象数组按对象属性排序

    数组对象要按属性大小排序怎么办? 数组对象属性排序 我们要如何实现数组中的对象按data大小排序? sort方法 ...

  • Java 数据结构

    冒泡排序,把数组里大小排序混乱的元素重新排序 插入排序,按元素大小从左往右排序 选择排序,依次在数组中找出最小的元...

  • 基础算法-归并排序

    今天学习相时间复杂度为O(nlogn)的排序算法:归并排序。 题目介绍 题目内容还是没变:给定一个数组,将数组按从...

  • js通过数组中的排序值排序

    arr按sort排序 //数组sort排序 arrsort(arr) { var len = arr.l...

  • 数组按字母排序

    //字母排序 duoxuanA 为数据数组 NSArray*resultkArrSort = [duoxuanA ...

  • C++结构体案例2

    对英雄数组按年龄进行排序 输出结果

网友评论

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

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