美文网首页
时间字符串按时间顺序排序

时间字符串按时间顺序排序

作者: 黎明s | 来源:发表于2018-11-21 11:31 被阅读0次

demo地址:https://share.weiyun.com/5KdP6lw

创建一个类SortedTime继承于NSObject
在该类中有一个方法,对传入字符串数组中的时间字符串根据时间格式进行排序(升序/降序)

+ (NSMutableArray *)sortedTimeWithTimeArray:(NSMutableArray<NSString *> *)timeArray dateFormater:(NSString *)dateFormater ascending:(BOOL)ascending;

创建一个类CustomDate,继承于NSObject,该类中有两个属性

@property (nonatomic, strong) NSString *strTime;
@property (nonatomic, strong) NSDate *dateTime;

SortedTime.m中,该方法的实现:

+ (NSMutableArray *)sortedTimeWithTimeArray:(NSMutableArray<NSString *> *)timeArray dateFormater:(NSString *)dateFormater ascending:(BOOL)ascending
{
    NSMutableArray *arrTemp = [[NSMutableArray alloc] init];
    NSMutableArray *arrResult = [[NSMutableArray alloc] init];
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone localTimeZone];
    [formatter setTimeZone:timeZone];
    
    for (NSString *timeString in timeArray)
    {
        CustomDate *dateC = [[CustomDate alloc] init];
        [formatter setDateFormat: dateFormater];
        dateC.dateTime = [formatter dateFromString:timeString];
        dateC.strTime = timeString;
        [arrTemp addObject:dateC];
    }
    
    NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"dateTime" ascending:ascending];
    NSMutableArray *sortDescriptors = [[NSMutableArray alloc] initWithObjects:&sorter count:1];
    NSMutableArray *sortArray = [arrTemp sortedArrayUsingDescriptors:sortDescriptors].mutableCopy;
    
    for (CustomDate *dateCustom in sortArray)
    {
        [arrResult addObject:dateCustom.strTime];
    }
    return arrResult;
}

关于NSSortDescriptor的使用,可以参考链接:
https://www.jianshu.com/p/3e9f0884be6b

使用方法:

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    NSMutableArray *arrTest = [[NSMutableArray alloc] init];
    [arrTest addObject:@"2018-11-20"];
    [arrTest addObject:@"2018-11-19"];
    [arrTest addObject:@"2018-11-7"];
    [arrTest addObject:@"2018-5-15"];
    NSLog(@"%@",[SortedTime sortedTimeWithTimeArray:arrTest dateFormater:@"yyyy-M-d" ascending:YES]);
}

输出结果:

(
    "2018-5-15",
    "2018-11-7",
    "2018-11-19",
    "2018-11-20"
)

*注:时间的格式要传正确,且时间不能重复,否则可能导致排序失败

相关文章

  • 时间字符串按时间顺序排序

    demo地址:https://share.weiyun.com/5KdP6lw 创建一个类SortedTime继承...

  • 数据排序与长宽型数据的转换

    1. 数据排序 1. sort()函数 对数值进行排序 对字符串进行排序(按首字母顺序) 1.2 rank()函数...

  • [MYSQL] 不按顺序排序,例如1,2,3按照2,3,1排序

    常用顺序排序,status顺序排序->order('status asc')不按顺序排序,status按照等于2,...

  • 永安新祥至官垌开路建设捐款光荣榜

    注:《捐款光荣榜》不按捐款金额多少排序,只按地址、(或自然村名)、姓名分段排序,按捐款时间先后顺序接龙排号展示。如...

  • Object Ordering对象排序

    一个List可以如下排序: 如果List类型是String,将按字母顺序排序,如果是Date,将按时间排序。因为S...

  • Map集合排序

    按插入顺序排序:LinkedHashMap 按访问顺序排序:LinkedHashMap,accessOrder值设...

  • 时间逻辑顺序

    时间的逻辑顺序,简称时间顺序,表示“时间先后”的逻辑顺序。顾名思义,时间顺序就是按照发生时间先后所排序的顺序。比如...

  • 2021年 战斗不息

    下列顺序是按重要程度排序的!如果时间冲突或者不允许,优先完成排序靠前的事项。 一 工作 1☆ 销售额120万+ ,...

  • python之理解排序

    python之理解排序 排序是以某种顺序从集合中存放元素的过程。例如,单词列表可以按字母顺序或按长度排序。城市列表...

  • 3/10 排序的高级用法

    一、按行排序: 一般排序是按某列的顺序,今天学习按某行的顺序排列。 步骤: 选中区域→点击数据“排序”选项→勾选方...

网友评论

      本文标题:时间字符串按时间顺序排序

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