如何按升序对对象的 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)
}
我是 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)
}