나는 다음과 같은 형식에 NSArray
포함하는 날짜/시간 NSStrings
있습니다NSArray를 날짜 시간 값으로 정렬하는 방법은 무엇입니까?
2/2/2011 2:46:39 PM
2/4/2011 11:59:47 AM
…
.
어떻게이 NSArray를 정렬하여 최신 날짜/시간이 맨 위에 오도록해야합니까? 당신은 자신의 논리가
나는 다음과 같은 형식에 NSArray
포함하는 날짜/시간 NSStrings
있습니다NSArray를 날짜 시간 값으로 정렬하는 방법은 무엇입니까?
2/2/2011 2:46:39 PM
2/4/2011 11:59:47 AM
…
.
어떻게이 NSArray를 정렬하여 최신 날짜/시간이 맨 위에 오도록해야합니까? 당신은 자신의 논리가
사용 방법 compare,
샘플있는 NSDate의을 비교 한,
NSDate *dateOne = [NSDate dateWithString:@"2008-12-04 03:00:00 +0900"];
NSDate *dateTwo = [NSDate dateWithString:@"2008-12-04 04:00:00 +0900"];
switch ([dateOne compare:dateTwo]){
case NSOrderedAscending:
NSLog(@”NSOrderedAscending”);
break;
case NSOrderedSame:
NSLog(@”NSOrderedSame”);
break;
case NSOrderedDescending:
NSLog(@”NSOrderedDescending”);
break;
}
사용 날짜를 처리하려면대신 NSDate
을 사용하십시오.. 또한 표준 시간대를 고려하는 것이 중요합니다. 웹 서비스가 UTC 또는 다른 표준 시간대로 날짜를 제공합니까?
먼저 문자열 배열을 날짜 배열로 변환해야합니다. 그렇지 않으면 비교를 위해 사용될 때마다 문자열을 날짜로 변환 할 것이고 문자열 수보다 더 많은 비교가있게 될 것입니다. 예를 들어
:
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"MM/DD/YYYY hh:mm:ss a"];
NSMutableArray *dateArray = [NSMutableArray array];
for (NSString *dateString in array) {
NSDate *date = [formatter dateFromString:dateString];
if (date) [dateArray addObject:date];
// If the date is nil, the string wasn't a valid date.
// You could add some error reporting in that case.
}
이 dateArray
-array
, NSStrings
배열, NSDates
의 가변 어레이로 변환한다. 날짜 포맷터는 시스템 시간대를 사용합니다. 당신은 시간대로 UTC를 사용하려면 :
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"MM/DD/YYYY hh:mm:ss a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
배열을 정렬이 다 끝나면 간단하다 : 웹 서비스에서 반환되는
[dateArray sortUsingSelector:@selector(compare:)];
사용 당신이있어이
NSMutableArray *mutArr=[yourArray mutableCopy];//convert your NSArray into mutable array
NSDateFormatter *df=[[[NSDateFormatter alloc] init] autorealese];
[df setDateFormat:@"MM/DD/YYYY hh:mm:ss a"];
NSDate *compareDate;
NSInteger index;
for(int i=0;i<[mutArray count];i++)
{
index=i;
compareDate=[df dateFromString:[mutArray objectAtIndex:i]];
NSDate *compareDateSecond;
for(int j=i+1;j<counter;j++)
{
compareDateSecond=[df dateFromString:[mutArr objectAtIndex:j]];
NSComparisonResult result = [compareDate compare:compareDateSecond];
if(result == NSOrderedAscending)
{
compareDate=compareDateSecond;
index=j;
}
}
if(i!=index)
[mutArr exchangeObjectAtIndex:i withObjectAtIndex:index];
}
}
NSLog(@"%@",mutArr);
하는 NSString. – jini
첫 번째 필드는 월입니다. 나는 그것을 언급해야했다는 점에 유감이다. – jini