【问题标题】:Set UIDatepicker programmatically以编程方式设置 UIDatepicker
【发布时间】:2012-10-28 07:37:28
【问题描述】:

我有一个日期选择器和 2 个按钮。当我单击按钮时,我想以编程方式设置 datepicker 值。就像当我按下第一个按钮时,日期选择器值变成今天的日期和 00:00:00: 时间,当我按下第二个按钮时,日期选择器值变成今天的日期和 23:59:59 时间。

如何做到这一点?

【问题讨论】:

    标签: iphone objective-c ios uidatepicker


    【解决方案1】:

    简单的任务,假设您已经添加了两个在按下按钮时调用的函数,您需要这样的东西:

    -(IBAction)beginPressed:(id)sender
    {
      NSDate * now = [[NSDate alloc] init];
      NSCalendar *cal = [NSCalendar currentCalendar];
      NSDateComponents * comps = [cal components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
      [comps setHour:0];
      [comps setMinute:0];
      [comps setSecond:0];
      NSDate * date = [cal dateFromComponents:comps];
      [self.datePicker setDate:date animated:TRUE];
    
    }
    -(IBAction)endPressed:(id)sender
    {
      NSDate * now = [[NSDate alloc] init];
      NSCalendar *cal = [NSCalendar currentCalendar];
      NSDateComponents * comps = [cal components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
      [comps setHour:23];
      [comps setMinute:59];
      [comps setSecond:59];
      NSDate * date = [cal dateFromComponents:comps];
      [self.datePicker setDate:date animated:TRUE];
    }
    

    我觉得设置组件的部分你不太清楚,查看以上类的API,你会发现更多。

    编辑:我将日历更改为当前默认日历并使用 now 初始化日历。

    【讨论】:

    • 感谢@iOS,但它没有给出想要的结果。它给出了 0001 年 1 月 1 日。我需要它是今天的日期,例如 2012 年 10 月 28 日 00:00:00,另一个是 2012 年 10 月 28 日 23:59:59
    【解决方案2】:
    NSDateFormatter *dateFormat;
      dateFormat = [[NSDateFormatter alloc] init];
     [dateFormat setDateFormat:@"h:mm a"];
      NSDate *exampleDateFromString =[dateFormat dateFromString:@"8:48 AM"]; 
      date-picker.minimumDate=exampleDateFromString;
     [date-picker setDate:exampleDateFromString];
    

    【讨论】:

    • 这对于设置为 setDatePickerMode:UIDatePickerModeTime 的 datePicker 非常有效
    【解决方案3】:

    对于那些想知道如何在 Swift 中做到这一点的人:

    let now = NSDate()
    let cal = NSCalendar.currentCalendar()
    let comp = cal.components([.Year, .Month, .Day], fromDate: now)
    comp.hour = 0 // or whatever you need
    comp.minute = 0
    let date = cal.dateFromComponents(comp)!
    picker.setDate(date, animated: true)
    

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2018-11-26
      • 2011-04-18
      • 2012-07-18
      • 2016-02-15
      • 2014-07-26
      • 1970-01-01
      • 2011-06-06
      • 2012-02-12
      相关资源
      最近更新 更多