Сравнение NSDate с [NSDate date]

Я пытаюсь заставить пользователя выбрать дату в будущем с помощью выбора даты. Я, очевидно, использовал метод compare: однако, когда я делаю следующий код, даже если он имеет ту же дату, что и [NSDate date], он сообщает, что выполняет оператор if. Вот мой код:

    if ([datePicker.date compare:[NSDate date]] == NSOrderedAscending) // If the picked date is earlier than today
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hmm, this date is earlier than today" 
                                                    message:@"The date you've selected is earlier than today date, please pick another" 
                                                   delegate:nil  
                                          cancelButtonTitle:@"Okay, I'll pick another" 
                                          otherButtonTitles:nil];
    // Show the alert
    [alert show];

    // Release the alert
    [alert release];
}

Ответ 1

Я не знаю ответа на вашу проблему, но как вы могли обойти это.

Просто используйте свойство minimumDate UIDatePicker, что даже намного более чистый подход.

Ответ 2

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

[datePicker.date timeIntervalSinceNow]

который возвращает NSTimeInterval (просто typedef для double, в секундах), что является положительным для будущего и отрицательным для прошлого.

Как говорит doc, сравнение дает субсекундное сравнение, поэтому вы можете использовать это, чтобы заставить их дату быть полным днем ​​позже (а не просто когда-нибудь в будущем).

Ответ 3

Объект NSDate содержит как дату, так и время, поэтому есть МНОГИЕ даты с тем же днем, которые могут упасть до или после другой даты с тем же днем.

Метод класса date возвращает объект даты с текущим днем ​​и временем.