日付で構成される配列がありますが、NSString
. 降順に並べ替えるにはどうすればよいですか?
編集:私の場合、他の方法を使用しても機能しないため、NSDateを使用するようにコードを微調整することで終了しました
日付で構成される配列がありますが、NSString
. 降順に並べ替えるにはどうすればよいですか?
編集:私の場合、他の方法を使用しても機能しないため、NSDateを使用するようにコードを微調整することで終了しました
を使用できますsortedArrayUsingFunction
。次の例を検討してください
NSString *str1 = @"03-07-2012";
NSString *str2 = @"01-07-2012";
NSString *str3 = @"02-07-2012";
NSArray *arr = [NSArray arrayWithObjects:str1, str2, str3, nil];
arr = [arr sortedArrayUsingFunction:dateSort context:nil];
//The date sort function
NSComparisonResult dateSort(NSString *s1, NSString *s2, void *context) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy"];
NSDate *d1 = [formatter dateFromString:s1];
NSDate *d2 = [formatter dateFromString:s2];
return [d1 compare:d2]; // ascending order
return [d2 compare:d1]; // descending order
}
NSString の日付を NSDate オブジェクトに変換し、日付に基づいて配列を並べ替える
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss ZZZ"];
NSDate *date = [dateFormatter dateFromString:dateStr];
NSComparisonResult dateSort(NSString *s1, NSString *s2, void *context) {
NSDate *d1 = [NSDate dateWithString:s1];
NSDate *d2 = [NSDate dateWithString:s2];
return [d1 compare:d2];
}
NSArray *sorted = [unsorted sortedArrayUsingFunction:dateSort context:nil];