比较2个日期限制用户选择未来日期?

时间:2011-11-09 05:10:17

标签: objective-c ios4 date uidatepicker

我对一个问题感到震惊,请看下面的问题并帮助解决。

我有一个我正在显示的日期选择器(日期,月份,年份),当用户选择上一个日期时,例如2011年11月5日,标签应该更新并显示所选日期&如果用户选择超出当前日期的未来日期,则应显示警告以选择“当前或上一个日期”。

以下是我无法达到条件的代码。

NSDate *post = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
dateFormat.dateStyle = NSDateFormatterMediumStyle;
NSString *theDate = [dateFormat stringFromDate:post];

NSDate *dates = [datepick date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateStyle = NSDateFormatterMediumStyle;
NSString *datetime = [dateFormatter stringFromDate:dates];

if (datetime > theDate) 
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Please select current date or past date" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
}
else if(datetime <= theDate)
{
    date_array = [[NSMutableArray alloc]init];
    date.text = datetime;
    [date_array addObject:datetime];
}
[dateFormat release];
[dateFormatter release];

请尽快帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以将NSDate与 - [NSDate compare:]进行比较。所以试试这个:

if ([dates compare:post] == NSOrderedDescending) {
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Healthcare" message:@"Please select current date or past date" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
}
else {
    ...
}

答案 1 :(得分:0)

您可以设置minimumDate实例的maximumDateUIDatePicker属性,用户将别无选择,只能从这些边界中选择日期:)