我有一个包含很多项目的字典。我希望按日期订购升序商品。我的日期格式是:2015年6月10日09:27:11
我尝试了这段代码,但没有工作:aux是我的数组,包含日期组件。
for (int i=0; i<aux.count-1; i++) {
for (int j=i+1; j<aux.count; j++) {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm:ss"];
NSDate *date1 = [dateFormat dateFromString:[aux objectAtIndex:i]];
NSDate *date2 = [dateFormat dateFromString:[aux objectAtIndex:j]];
NSComparisonResult comparisonResult = [date1 compare:date2];
if (comparisonResult==-1) {
NSString *var= [aux objectAtIndex:i];
[aux replaceObjectAtIndex:i withObject:[aux objectAtIndex:j]];
[aux replaceObjectAtIndex:j withObject:var];
}
}
}
我想比较两个日期(date1,date2)。如果date2比date1更大,我想要交换。我需要手动交换所以:如果date2更大,我想从方法中选择true
或1
。
答案 0 :(得分:5)
让NSMutableArray
使用其中一种排序方法处理排序(例如sortUsingComparator:
):
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm:ss"];
[aux sortUsingComparator:^NSComparisonResult(NSString *datestring1, NSString *datestring2) {
NSDate *date1 = [dateFormatter dateFromString:datestring1];
NSDate *date2 = [dateFormatter dateFromString:datestring2];
return [date1 compare:date2];
}];
SIDENOTE :您还应该考虑将日期字符串转换为NSDate
s 一次并将其作为NSDate
存储在数组中。
答案 1 :(得分:0)
假设您有一个NSMutableArray对象,其字段为“startDate”,类型为NSDate,则使用下面的代码:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"startDate" ascending:YES];
[myMutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
答案 2 :(得分:0)
尝试比较和填充如下所示
NSComparisonResult result;
result = [Str_StoreOpening compare:Str_StoreClosing]; // comparing two dates
NSString *Str_CloseTime;
if(result==NSOrderedAscending){
//populate in Ordered Ascending in here
}else if(result==NSOrderedDescending){
//populate in Ordered Descending in here
}else{
//NSLog(@"Both dates are same");
}