2013-04-08 53 views
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" 
) 

但正如预期的那么帮我它不排序同行

+1

对于排序日期,您的日期应该是yyyy/MM/dd格式,以便正确排序 – Pratik 2013-04-08 12:05:58

+1

[datearray sortUsingSelector:@selector(compare :)]; 与日期时间格式yyyy-MM-dd – 2013-04-08 12:07:17

回答

4

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

换句话说,因为你的作品格式不正确,所有dateFromString:回报nil,你总是有nil,返回0比较nil

将您的日期保存为NSDate实例会让您的生活更轻松。一般而言,只有在您将其呈现给用户或将其发送给其他应用程序(例如Web服务)时,最好将日期转换为NSString

0

你可以做这样的事情:

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

希望它有帮助!