我只想在他们的日期和年份对NSDates数组进行排序,而不是在任何单位时间。我怎么能这样做是因为我看不到将NsDate的各个部分“取出”的方法。
答案 0 :(得分:4)
有关对包含NSDate对象的数组进行排序,请参阅此文章:
Sort NSArray of date strings or objects
并且我要去除时间:
Truncate NSDate (Zero-out time)
<强> ADDITION 强>
1)循环遍历NSDate对象数组,删除(归零)时间组件,并将它们添加到新数组中:
NSMutableArray *newDateArray = [NSMutableArray array];
for (NSDate *d in myDateArray)
{
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:flags fromDate:d];
//Taking the time zone into account
NSDate *dateOnly = [[calendar dateFromComponents:components] dateByAddingTimeInterval:[[NSTimeZone localTimeZone]secondsFromGMT]];
[newDateArray addObject:dateOnly];
}
2)既然您有一个由具有零时间组件的NSDate对象组成的新数组,您可以对它们进行排序:
[newDateArray sortUsingSelector:@selector(compare:)];
该行使用NSDate对象自己的比较器方法对数组进行排序。