如何按升序对对象的 NSMutableArray 进行排序以及如何更改 iOS 中的 DateFormat

How to sort NSMutableArray of object in ascending and how can I change DateFormat in iOS

我是 iOS 的新手,我正在将我的应用与服务集成

和表单服务我得到 "Date" 值,我将日期值存储在 **NSMutableArray** 中,所以我怎样才能保持数组列表的升序,请参见下面

以及如何更改下面的数组列表日期格式,例如“2016 年 2 月 17 日 20:25”,请帮帮我

我的数组:

(
    "02/17/2016 1415",
    "02/13/2016 1415",
    "02/14/2016 1415",
    "02/18/2016 1534",
    "02/21/2016 1534",
    "02/22/2016 1534",
    "02/18/2016 1534",
    "02/20/2016 1534",
)

按升序对 NsmutableArray 进行排序的代码:

NSMutableArray *arr = @[@"02/17/2016",
                        @"02/13/2016",
                        @"02/14/2016",
                        @"02/18/2016",
                        @"02/21/2016",
                        @"02/22/2016",
                        @"02/18/2016",
                        @"02/20/2016"].mutableCopy;

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: YES];
NSArray *arr1 =  [arr sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];

和输出:

(
"02/13/2016",
"02/14/2016",
"02/17/2016",
"02/18/2016",
"02/18/2016",
"02/20/2016",
"02/21/2016",
"02/22/2016"
)

更改日期格式的代码:

 NSString *dateString = @"11-13-2015";
 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 [dateFormatter setDateFormat:@"MM-dd-yyyy"];
 NSDate *date = [dateFormatter dateFromString:dateString];

 // Convert date object into desired format
 [dateFormatter setDateFormat:@"dd MMM yyyy"];
 NSString *newDateString = [dateFormatter stringFromDate:date];

排序

 NSSortDescriptor* OrderBy = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: YES]; // for ascending use `YES`, for Descending USE `NO`
NSArray *finalArar =  [yourmutableArrayName sortedArrayUsingDescriptors: [NSArray arrayWithObject: OrderBy]];

更改日期格式

    for (NSString *dte in finalArar)
    {
     NSDateFormatter *format = [[NSDateFormatter alloc] init];

     //your Date String is  02/17/2016
    [format setDateFormat:@"MM/dd/yyyy"];

    // for example like this 
    [format setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
   // or use this [format setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
    NSDate *parsed = [format dateFromString:dte];
     //final   String is     02 Feb 2016
     [format setDateFormat:@"dd MMM yyyy"];
       NSString *newDateString = [format stringFromDate:parsed];
       NSLog(@"final date==%@",newDateString)
      }