Comparing an NSDate to [NSDate date]

霸气de小男生 提交于 2019-12-20 20:31:11

问题


I am trying to force a user to select a date in the future with a date picker. I obviously used the compare: method, however, when I do the following code, even if it's the same date as [NSDate date], it tells the executes the if statement. Here is my code:

    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];
}

回答1:


I don't know the answer to your problem, but how you could circumvent it.

Just use the minimumDate property of the UIDatePicker, that's even a much cleaner approach.




回答2:


You can use

[datePicker.date timeIntervalSinceNow]

which returns an NSTimeInterval (just a typedef for a double, in units of seconds) which is positive for the future and negative for the past.

As the doc says, compare provides subsecond comparison, so you can use this to force their date to be a full day later (instead of just sometime in the future).




回答3:


An NSDate object contains both a date AND a time, so there are MANY dates with the same day that can fall before or after another date with the same day.

The date class method returns a date object with the current date day AND time.



来源:https://stackoverflow.com/questions/2258703/comparing-an-nsdate-to-nsdate-date

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!