次のような日付文字列を含む配列があります
"2011/9/15 12:00:00 AM", "2011/10/15 12:00:00 AM", "2011/11/16 12:00:00 AM"
この配列を降順に並べ替えるにはどうすればよいですか? 順序は、最初に年、次に月、次に日付、そして時間でソートする必要があります。
あなたのアイデアを共有してください。ありがとうございました
次のような日付文字列を含む配列があります
"2011/9/15 12:00:00 AM", "2011/10/15 12:00:00 AM", "2011/11/16 12:00:00 AM"
この配列を降順に並べ替えるにはどうすればよいですか? 順序は、最初に年、次に月、次に日付、そして時間でソートする必要があります。
あなたのアイデアを共有してください。ありがとうございました
以下のコードを試してください。ソート日は昇順で表示されます。
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]);
NSString形式のNSDatesを並べ替えることは、文字列の並べ替えとして並べ替えることができる"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:)];
そして、元の答えはここにあります!
それらがすでに文字列である場合は、それらを NSDates (したがって NSTimeIntervals) に変換して並べ替えるか、数字を 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;
2 つの日付を比較する方法があります。
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 オブジェクトであることを確認してください。それらを比較した後、バブル ソート メソッドを使用して配列をソートできます。