我试图强制用户使用日期选择器选择将来的日期。我显然使用了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'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];
}
答案 0 :(得分:24)
您可以使用
[datePicker.date timeIntervalSinceNow]
返回一个NSTimeInterval(只是一个double的typedef,以秒为单位),对于未来是正面的,对过去是负面的。
正如文档所说,compare提供亚秒级比较,因此您可以使用它来强制他们的日期为一整天(而不是仅仅是将来某个时间)。
答案 1 :(得分:15)
我不知道你的问题的答案,但你怎么能绕过它。
只需使用 UIDatePicker 的 minimumDate 属性,即使是更清晰的方法。
答案 2 :(得分:1)
NSDate对象包含日期和时间,因此在同一天的另一个日期之前或之后可能会有同一天的许多日期。
date
类方法返回一个日期对象,其中包含当前日期和时间。