从阵列获取当天的所有日期

时间:2013-05-11 13:27:15

标签: objective-c date sorting nsdate

假设我有不同日期的NSMutableArray。日期在UITableView中表示。如果我点击UITableViewCell,如何从NSMutableArray获取当天的所有日期?

所以我想说星期一有3个日期,星期二有1个星期日,星期三有4个星期日等等......如果按下代表星期一的1/3日期,我怎样才能得到星期一的所有3个日期而忽略其他日子?

如果可能的话,我怎么能对它们进行排序?因此,如果我在8,9,10小时(全部在星期一)保存,并且我按任意小时(也包括分钟),他们将按照他们真正发生的8-9-10排序......

TNX。

1 个答案:

答案 0 :(得分:1)

使用NSDate和公司进行日期计算有点复杂,但实际上非常强大。以下是过滤数组的一种方法:

int main (int argc, const char * argv[])
{
    @autoreleasepool {

        NSCalendar  *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
        NSMutableArray *dates = [NSMutableArray array];
        NSDate  *selectedDate = [NSDate date];

        for (int i=0;   i<70;  i++)
            [dates addObject:[NSDate dateWithTimeIntervalSinceNow:i * 60*60*24]];



        NSInteger selectedDayOfWeek = [calendar components:NSWeekdayCalendarUnit fromDate:selectedDate].weekday;

        NSPredicate *filter = [NSPredicate predicateWithBlock:^(id object, NSDictionary *bindings) {
            return (BOOL)([calendar components:NSWeekdayCalendarUnit fromDate:object].weekday == selectedDayOfWeek);
        }];

        NSArray *filteredDates = [dates filteredArrayUsingPredicate:filter];

        NSArray *sortedDates = [filteredArray sortedArrayUsingSelector:@selector(compare:)];

        NSLog(@"%@", filteredDates);
    }
    return 0;
}