这段代码有什么问题?
NSDate *matchDateCD = [[object valueForKey:@"matchDate"] description]; // from coredata NSDate
NSDate *add90Min = [matchDateCD dateByAddingTimeInterval:5400];
if ( matchDateCD >=[NSDate date] || add90Min <= matchDateCD )
{
cell.imageView.image = [UIImage imageNamed: @"r.gif"];//Show image in the table
}
如果比赛正在进行或需要90分钟,我需要在表格中显示此图片
答案 0 :(得分:41)
我不知道您拨打object
的{{1}}是什么,但假设它返回valueForKey:
个对象,您对NSDate
的额外调用将分配{ {1}}(描述的返回值)为description
。那不是你想要做的。
这是你想要做的:
NSString
答案 1 :(得分:9)
使用NSDate的dateByAddingTimeInterval方法添加到时间的秒数。
NSDate* newDate = [oldDate dateByAddingTimeInterval:90];
然后,您可以使用NSDateFormatter或NSDateComponents将新时间重新用完。
答案 2 :(得分:4)
您还可以设置小时,年,月和秒等
NSDateComponents *components= [[NSDateComponents alloc] init];
[components setMinute:30];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *myNewDate=[calendar dateByAddingComponents:components toDate:[NSDate date] options:0];
答案 3 :(得分:1)
日期是对象,因此比较指针并不好。将它们转换为公共时间间隔(浮点数):
NSDate *now = [NSDate date];
NSDate *tenMinsLater = [now dateByAddingTimeInterval:600];
NSTimeInterval nowInterval = [now timeIntervalSinceReferenceDate];
NSTimeInterval *tenMinsLaterInterval = [tenMinsLater timeIntervalSinceReferenceDate];
if (nowInterval > tenMinsLaterInterval) NSLog(@"never get here");
或者,使用比较器:
// also false under newtonian conditions
if (now > [now laterDate:tenMinsLater]) NSLog(@"einstein was right!");
或使用earlyDate:或compare: