Подтвердить что ты не робот

Добавить 90 минут в 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

}    

Мне нужно показать это изображение в таблице, если совпадение выполняется или в течение 90 минут

4b9b3361

Ответ 1

Я не знаю, что object заключается в том, что вы вызываете valueForKey: on, но предполагаете, что он возвращает объект NSDate, ваш дополнительный вызов description назначит NSString (возвращаемое значение описания ) до matchDateCD. Это не то, что вы хотите сделать.

Это то, что вы хотите сделать:

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
}

Ответ 2

Используйте метод dateByAddingTimeInterval для NSDate, чтобы добавить количество секунд к времени.

NSDate* newDate = [oldDate dateByAddingTimeInterval:90];

Затем вы можете использовать NSDateFormatter или NSDateComponents, чтобы снова получить новое время.

Ответ 3

Вы также устанавливаете час, годы, месяцы и секунды и т.д.

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

Ответ 4

Даты - это объекты, поэтому нецелесообразно сравнивать указатели. Либо преобразуйте их в общие временные интервалы (поплавки):

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!");

или используйте функцию oldDate: или сравните:

Ответ 5

Для Swift 4

Чтобы добавить 90 минут в Date использовать addTimeInterval ( _:)

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

Для вопроса, быстрый код ниже

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")
   }
}