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

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

11 голосов
/ 13 февраля 2010

Я пытаюсь заставить пользователя выбрать дату в будущем с помощью средства выбора даты. Я, очевидно, использовал метод сравнения: однако, когда я делаю следующий код, даже если это та же дата, что и [дата NSDate], он сообщает исполняющему оператору 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's date, please pick another" 
                                                   delegate:nil  
                                          cancelButtonTitle:@"Okay, I'll pick another" 
                                          otherButtonTitles:nil];
    // Show the alert
    [alert show];

    // Release the alert
    [alert release];
}

Ответы [ 3 ]

24 голосов
/ 13 февраля 2010

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

[datePicker.date timeIntervalSinceNow]

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

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

15 голосов
/ 13 февраля 2010

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

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

1 голос
/ 13 февраля 2010

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

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

...