我正在为对象设置timeStamp属性。现在我只是使用[NSDate date]
。用户可能每天创建10个对象。但是在UI中,我希望按日期删除它们。因此,每一天都会显示当天创建的所有对象。我怎样才能做到这一点?现在它正试图匹配日期和时间等。
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。
答案 0 :(得分:3)
您可以使用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比较方法;它将受益于单元测试。
答案 1 :(得分:1)
你的问题制定得相当广泛。要将NSDate
对象的日期部分设为NSString
,您可以使用:
NSDate *dateIn = [NSDate date];
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyy-MM-dd"];
NSString *stringOut = [fmt stringFromDate:dateIn];
[fmt release];
您可以轻松更改日期格式。如果您经常调用此代码(例如在循环中),您可能只想分配和设置日期格式化程序一次。