2012-06-13 26 views
16

điều gì sai với mã này?Thêm 90 phút vào NSDate

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 

}  

tôi cần phải hiển thị hình ảnh này trong bảng nếu trận đấu đang chạy hay trong 90 phút

+0

'newDate' là gì? –

Trả lời

37

Tôi không biết object là gì mà bạn gọi số valueForKey: bật nhưng giả sử nó trả về đối tượng NSDate, cuộc gọi bổ sung của bạn tới description sẽ chỉ định NSString (giá trị trả về của mô tả) thành matchDateCD. Đó không phải là điều bạn muốn làm.

Đây là những gì bạn muốn làm:

NSDate *matchDateCD = [object valueForKey:@"matchDate"]; 
NSDate *add90Min = [matchDateCD dateByAddingTimeInterval:(90*60)]; // compiler will precompute this to be 5400, but indicating the breakdown is clearer 

if ([matchDateCD earlierDate:[NSDate date]] != matchDateCD || 
    [add90Min laterDate:matchDateCD] == add90Min) 
{ 
    cell.imageView.image = [UIImage imageNamed: @"r.gif"];//Show image in the table 
} 
6

Sử dụng phương pháp dateByAddingTimeInterval của NSDate để thêm số giây để thời điểm đó.

NSDate* newDate = [oldDate dateByAddingTimeInterval:90]; 

Sau đó, bạn có thể sử dụng NSDateFormatter hoặc NSDateComponents để nhận lại thời gian mới.

1

Ngày là đối tượng, do đó, không nên so sánh các con trỏ. Hoặc chuyển đổi chúng thành các khoảng thời gian thông thường (phao):

NSDate *now = [NSDate date]; 
NSDate *tenMinsLater = [now dateByAddingTimeInterval:600]; 

NSTimeInterval nowInterval = [now timeIntervalSinceReferenceDate]; 
NSTimeInterval *tenMinsLaterInterval = [tenMinsLater timeIntervalSinceReferenceDate]; 

if (nowInterval > tenMinsLaterInterval) NSLog(@"never get here"); 

Hoặc, sử dụng các bộ so sánh:

// also false under newtonian conditions 
if (now > [now laterDate:tenMinsLater]) NSLog(@"einstein was right!"); 

hoặc sử dụng earlierDate: hoặc so sánh:

4

Bạn cũng đặt Giờ, năm, tháng và giây vv

 NSDateComponents *components= [[NSDateComponents alloc] init]; 
    [components setMinute:30]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDate *myNewDate=[calendar dateByAddingComponents:components toDate:[NSDate date] options:0]; 
1

Đối Swift 4

Để thêm 90 phút đến Date sử dụng addingTimeInterval(_:)

let now = Date() 
let minutes: Double = 90 
let add90MinsDate = now.addingTimeInterval(minutes * 60) 

Đối với câu hỏi, mã nhanh chóng dưới đây

if let matchDateCD: Date = objest.value(forKey: "matchDate") as? Date { 
    let add90Min = matchDateCD.addingTimeInterval(90 * 60) 
    if matchDateCD >= Date() || add90Min > matchDateCD { 
     cell.imageView.image = UIImage(named: "r.gif") 
    } 
} 
Các vấn đề liên quan