Как определить, прошло ли NSDate (включая время) - PullRequest
22 голосов
/ 05 января 2012

Как определить, прошло ли NSDate (включая время)? Мне нужно в принципе сравнить сегодняшнюю дату с датой в БД, но я в тупике.

Ответы [ 3 ]

91 голосов
/ 05 января 2012

Попробуйте это:

if ([someDate timeIntervalSinceNow] < 0.0) {
    // Date has passed
}
6 голосов
/ 05 января 2012

вам нужно использовать сравнение NSDate, вам помогут многие ответы.

iOS: сравните две даты

логика потребует настройки, но этоустановите вас в правильном направлении:

- (BOOL)date:(NSDate*)date isBefore:(BOOL)before otherDate:(NSDate*)otherDate ;
{
    if(before && ([date compare:otherDate] == NSOrderedAscending))
        return YES;
    if (!before && ([date compare:otherDate] == NSOrderedDescending))
        return YES;  
}

использование:

if([self date:yourDate isBefore:YES otherDate:[NSDate date]]) 
2 голосов
/ 05 января 2012

Вы можете использовать

[NSDate date];

для получения объекта NSDate, представляющего текущее время и дату.

Затем сравните это с датой, которую вы анализируете, например:

if ([currentDate timeIntervalSince1970] > [yourDate timeIntervalSince1970]) {
// yourDate is in the past
}

Вы можете использовать это для сравнения любых двух дат. Надеюсь, это поможет.

...