【问题标题】:Can UIDatePicker's minimumDate and maximumDate include time?UIDatePicker 的 minimumDate 和 maximumDate 可以包含时间吗?
【发布时间】:2010-03-14 05:12:15
【问题描述】:

需要具有特定最大和最小日期和时间的 UIDatePicker。目前 NSDatePicker.minimumDate 和 .maximumDate 似乎只考虑日期。处理这个问题的正确方法是什么?

【问题讨论】:

    标签: iphone datetime uikit uidatepicker


    【解决方案1】:

    NSDates 包含日期和时间。来自文档:

    NSDate 对象代表一个时间点。

    以下示例将当前日期和时间作为最小值,将一小时后的时间作为最大值(测试它只需将其放入任何 UIViewController 的 viewDidLoad 中):

    // Time right now
    NSDate *minDate = [NSDate new];
    // One hour from now
    NSDate *maxDate = [[NSDate alloc] initWithTimeIntervalSinceNow:60*60];
    
    UIDatePicker *picker = [UIDatePicker new];
    [picker setDatePickerMode:UIDatePickerModeDateAndTime];
    [picker setMinimumDate:minDate];
    [picker setMaximumDate:maxDate];
    [[self view] addSubview:picker];
    [super viewDidLoad];
    

    您可以在Dev Center 上阅读有关 NSDate 的更多信息。

    【讨论】:

    • 谢谢保罗。是的,我知道上述内容,并且我的 mindate 和 maxdate NSDate 对象包含时间,但 UIDatePicker 仅按日期设置边界。换句话说,如果我将 mindate 设置为今天早上 8 点,它会阻止我将日期设置为昨天,但我仍然可以选择更早的时间......例如早上 6 点。
    • 这很奇怪。如果您提前几个小时将 minDate 更改为 NSDate,您应该无法选择更早的时间。当我选择早上 6 点时,在我的情况下发生的事情是选择器动画回到最小有效时间早上 8 点。有代码示例吗?
    • 嗯,我很高兴听到它按我认为应该的方式工作。我不高兴认为我的代码有问题 :) 让我回顾一下,看看我是否可以提取相关示例。感谢您一直以来的帮助。
    【解决方案2】:
    NSDateFormatter *FormatDate = [[[NSDateFormatter alloc] init] autorelease];
    [FormatDate setDateFormat:@"MMMM d y"];
    
    NSString *date1=[FormatDate stringFromDate:[theDatePicker date]];
    NSString *today=[FormatDate stringFromDate:[NSDate date]];
    NSTimeInterval secondsPerDay = 24 * 60 * 60;
    NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];
    NSString *tommorow=[FormatDate stringFromDate:tomorrow];
    [pickerViewPopup dismissWithClickedButtonIndex:0 animated:YES];
    if ([date1 isEqualToString:today]||[date1 isEqualToString:tommorow] ) {
        NSDateFormatter *FormatDate = [[[NSDateFormatter alloc] init] autorelease];
        [FormatDate setDateFormat:@"MMM dd,yyyy"];
        currentdate.text = [FormatDate stringFromDate:[theDatePicker date]];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 2022-10-23
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多