0

在我的应用程序中,我有一个字符串数组,表示格式为 MM/dd/YYYY 的日期

下面是我用来排序这个数组的代码

NSDateFormatter *formatter =[[NSDateFormatter alloc]init];

[formatter setDateFormat:@"MM/dd/YYYY"];
NSLog(@" arr %@",arr);
[arr sortUsingComparator:^NSComparisonResult(id obj1, id obj2)
 {

     NSDate *date1=[formatter dateFromString:obj1];
     NSDate *date2=[formatter dateFromString:obj2];
     return [date1 compare:date2];
 }];
NSLog(@" arr %@",arr);

下面是 nslog 的输出

2013-04-08 17:23:48.112 SEEMR[2792:c07]  arr (
    "02/18/2013",
    "02/16/2013",
    "02/14/2013",
    "01/16/2013",
    "02/13/2013",
    "03/16/2013"
)
2013-04-08 17:24:07.662 SEEMR[2792:c07]  arr (
    "02/18/2013",
    "02/16/2013",
    "02/14/2013",
    "01/16/2013",
    "02/13/2013",
    "03/16/2013"
)

但它没有按预期排序,所以请帮助我的同行

4

2 回答 2

4

使用时NSDateFormatter,请始终测试您的格式字符串是否正确。你的不是。应该是MM/dd/yyyy(情况很重要)。

换句话说,由于您的格式化程序工作不正确,所有dateFromString:返回nil并且您总是nil与 a比较nil,后者返回0

将您的日期保存为NSDate实例将使您的生活更轻松。一般情况下,最好将日期转换为NSString仅当您将其呈现给用户或将其发送到其他应用程序(例如 Web 服务)时。

于 2013-04-08T12:06:57.160 回答
0

你可以这样做:

NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"date property name" ascending:YES];
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];

希望能帮助到你!

于 2013-04-08T12:06:06.980 回答