2013-04-08 35 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]]; 

希望它有幫助!