【问题标题】:Comparing 2 dates for restricting user to select future date?比较 2 个日期以限制用户选择未来日期?
【发布时间】:2011-11-09 05:10:17
【问题描述】:

我遇到了一个问题,请参阅下面的问题并帮助解决。

我有一个日期选择器,我在其中显示(日期、月份、年份),当用户选择之前的日期(例如 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];

请尽快提供帮助。谢谢。

【问题讨论】:

    标签: objective-c ios4 date uidatepicker


    【解决方案1】:

    您可以将NSDates 与 -[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 {
        ...
    }
    

    【讨论】:

      【解决方案2】:

      您可以设置UIDatePicker 实例的minimumDate 和maximumDate 属性,用户将别无选择,只能在这些范围内选择日期:)

      【讨论】:

        猜你喜欢
        • 2015-06-03
        • 2017-08-11
        • 2014-01-24
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        • 1970-01-01
        • 1970-01-01
        • 2020-01-04
        相关资源
        最近更新 更多