加入NSDate 90分钟

时间:2012-06-13 16:56:44

标签: ios time

这段代码有什么问题?

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分钟,我需要在表格中显示此图片

4 个答案:

答案 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: