我有一个包含日期字符串的数组,如
" 9/15/2011 12:00:00点"、"10/15/2011 12:00:00点","11/16/2011 12:00:00我"
如何按降序排序这个数组?顺序应该是:先按年,然后是月,然后是日期,最后是时间。
请分享你的想法。谢谢你
排序 nsdate ,而他们在NSString格式几乎是不可能的,除非他们是在格式"YYYYMMddHHmmss",你可以排序字符串。参考@Daniel R Hicks答案
在解析和添加web服务中的日期时,将字符串转换为NSDate。
NSString *dateStr = ...
NSDateFormatter *df = ;[NSDateFormatter alloc] init];
[df setDateFormat:@"M/dd/YYYY hh:mm:ss a"];
[datesArray addObject:[df dateFromString:dateStr]];
排序,
[datesArray sortUsingSelector:@selector(compare:)];
原来的答案在这里!
试试下面列出的代码。它将按升序给出排序日期。
NSMutableArray *arraydate=[[NSMutableArray alloc] init];
[arraydate addObject:@"22/7/2010"];
[arraydate addObject:@"1/1/1988"];
[arraydate addObject:@"22/7/1966"];
[arraydate addObject:@"22/7/2000"];
[arraydate addObject:@"1/7/2010"];
[arraydate sortUsingSelector:@selector(compare:)];
NSLog(@"array=%@",[arraydate description]);
如果它们已经是字符串,您可以将它们转换为NSDates(因此也可以转换为nstimeinterval)并对它们进行排序,或者有效地将数字重新排列为YYMMDDHHmmss,其中HH已转换为00-23表示。
都可以通过调用sortUsingFunction来实现。
static NSStringCompareOptions comparisonOptions = NSCaseInsensitiveSearch | NSNumericSearch |NSWidthInsensitiveSearch | NSForcedOrderingSearch;
NSLocale *currentLocale = [NSLocale currentLocale];
NSArray *sortArray = [iArray sortedArrayUsingComparator:^(id string1, id string2) {
NSRange string1Range = NSMakeRange(0, [string1 length]);
//if([string2 isEqualToString:@"#"])
//return -1;
return [string1 compare:string2 options:comparisonOptions range:string1Range locale:currentLocale];
}];
return sortArray;
有一个比较两个日期的方法。
int interval = [date1 compare:date2];
if (interval == 1)
{
NSLog(@"Right hand side date is earlier");
}
else if (interval == -1)
{
NSLog(@"Left hand side date is earlier");
}
else
{
NSLog(@"Both Dates are equal");
}
你可以使用这个方法,但要确保你的date1和date2是NSDate对象,在比较它们之后,你可以使用冒泡排序方法来排序数组。