我正在为对象设置时间戳属性。现在我正在使用[NSDate date]。用户可以每天创建10个对象。但在用户界面中,我想按日期删除它们。因此,每天都会显示为那天创建的所有对象。我该怎么做?现在它正在尝试匹配日期和时间等。

Example:
Obj1 - 2/5/12 5pm
Obj2 - 2/5/12 12pm
Obj3 - 2/4/12 6pm
Obj4 - 2/1/12 1pm

我需要能够按天分组,一个是2/5、2/4和2/1。

最佳答案

可以使用nsdatecomponents类直接访问nsdate实例的日期、月份和年份。

NSDate *someDate = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit fromDate:someDate];

NSLog(@"Year: %d", [components year]);
NSLog(@"Month: %d", [components month]);
NSLog(@"Day: %d", [components day]);

下面是nsdatecomponents比较方法:
- (BOOL)isFirstCalendarDate:(NSDateComponents *)first beforeSecondCalendarDate:(NSDateComponents *)second
{
    if ([first year] < [second year]) {
        return YES;
    } else if ([first year] == [second year]) {
        if ([first month] < [second month]) {
            return YES;
        } else if ([first month] == [second month]) {
            if ([first day] < [second day]) {
                return YES;
            }
        }
    }
    return NO;
}

我还没有测试nsdatecomponents比较方法;它将从单元测试中受益。

10-08 07:31
查看更多