【问题标题】:How to sort the Array that contains date in strings in ascending order如何按升序对包含字符串中日期的数组进行排序
【发布时间】:2015-02-25 04:50:32
【问题描述】:

我有字典数组,每个字典都包含一个日期参数。日期参数数组(包含在字典中)如下:

 [@"16-1-2015 7:00PM",@"15-1-2014 11:30AM",@"14-1-2014 7:00PM",
 @"15-1-2015 6:30AM ".@"16-1-2015 8:30PM"]

我需要这样的输出:

[@"16-1-2015 8:30PM",@"16-1-2015 7:00PM",@"15-1-2015 6:30AM ",
@"15-1-2014 11:30AM",@"14-1-2014 7:00PM"];

【问题讨论】:

标签: ios objective-c nsdate nsdateformatter


【解决方案1】:

你可以试试这个:

NSArray *dateStringArray = @[ @"16-1-2015 7:00PM", @"15-1-2014 11:30AM", @"14-1-2014 7:00PM", @"15-1-2015 6:30AM ", @"16-1-2015 8:30PM" ];

 - (NSArray *)sortDateStringArray:(NSArray *)dateStringArray
    {
        NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];
        [dateFormater setDateFormat:@"dd-MM-yyyy h:mma"];
        NSArray *sortedArray = [dateStringArray sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
          NSDate *date1 = [dateFormater dateFromString:obj1];
          NSDate *date2 = [dateFormater dateFromString:obj2];
          return [date2 compare:date1];
        }];
        return sortedArray;
    }

我认为最好将你的 dateString 转换为 NSDate 然后比较
希望有帮助!!!

【讨论】:

  • 请注意,如果交换比较操作数,则可以消除 switch 语句:return [date2 compare:date1]; 另请注意,构造 NSDateFormatter 是一项昂贵的操作,至少应将其提升到块外.
  • 谢谢伙计。拯救了我的一天。 @HuyNghia:请注意,上面的代码用于按降序排序。要使其升序排序,只需在此行将 date1 替换为 date2:return [date2 compare:date1];
【解决方案2】:

将日期作为NSDate 对象存储在NSMutableArray 中,然后使用-[NSArray sortedArrayUsingSelector:] or -[NSMutableArray sortUsingSelector:] 并将@selector(compare:) 作为参数传递。 -[NSDate compare:] 方法将为您按升序排列日期。这比创建NSSortDescriptor 简单,也比编写自己的比较函数简单得多。 (NSDate 对象知道如何相互比较,至少与我们希望使用自定义代码完成的效率一样。)

或者

如果我有一个NSMutableArray 的对象,其字段“beginDate”类型为NSDate,我正在使用NSSortDescriptor,如下所示:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"beginDate" ascending:TRUE];
[myMutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[sortDescriptor release];

请访问此问题:here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2023-04-08
    • 2011-07-23
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多