2013-07-18 115 views
1

我想仅在UIDatePicker中显示最短时间+12小时的时间。下面是我的代码:UIDatePicker:最短日期

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet 
{ 
    NSLog(@"startTimeLabel %@", startTimeLabel); 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"HH:mm a"]; 
    NSDate *minimumTime = [formatter dateFromString:startTimeLabel]; 
    NSLog(@"minimumTime Formatted %@", minimumTime); 


    UIDatePicker *pickerView = [[[UIDatePicker alloc] init] initWithFrame:CGRectMake(0, 40, 320, 216)]; 

    pickerView.datePickerMode = UIDatePickerModeTime; 
    [pickerView setMinimumDate:minimumTime]; 

    [pickerView setMinuteInterval:15]; 
    [pickerView setTag: kDatePickerTag1]; 
    //Add picker to action sheet 
    [actionSheet addSubview:pickerView]; 
    NSArray *subviews = [actionSheet subviews]; 
} 

这里是日志:

2013-07-17 18:13:37.682 MeetingTime[12294:c07] startTimeLabel 6:15 PM 
2013-07-17 18:13:37.683 MeetingTime[12294:c07] minimumTime Formatted 2000-01-01 20:15:00 +0000 

Q1。为什么startTimeLabel显示为6:15 PM,但在格式化之后是20:15:00 + 0000。难道不是18点15分?我的格式错了吗?我不需要日期,我可以摆脱它吗? Q2302。我希望picker从startTimeLabel获得最短时间,并将其用作minimumTime。是否有可能在最短时间之前不显示任何时间?即如果startTimeLabel是6:15 PM,那么UIPicker中的唯一选项将是6:30 PM + 12 Hours?我怎样才能做到这一点?谢谢。

+0

Q1。你的时区是什么? – Raptor

+0

我们在美国太平洋标准时间(PST)。但我想申请在任何时区工作。 – user1107173

回答

0

对于Q1,已经回答了here

对于Q2,您可以评估startTimeLabel的值,并将其添加12小时,然后将其设置为UIDatePicker,setMinimumDate方法的最小日期。

+0

谢谢。对于Q2:如果setMinimumDate时间是下午4:00,UIPicker是否只能显示时间下午4:00以后?我试图用上面的代码来做到这一点,但是,UIPicker显示全部24小时。基本上,我不希望UIPicker在minimumDate之前显示任何时间。 – user1107173

+0

当用户选择日期/时间时,您可能不得不做额外的检查。 – Raptor

+0

我不确定我是否关注你。我有用户选择一个时间,我存储在一个变量startTimeVariable。然后我将它转换为NSDate格式并将其存储在minimumDate变量中。同样,问题是我可以在UIPicker没有显示存储在minimumDate中的时间之前显示时间吗?如果用户选择了下午4点,UIPicker将只在下午4点以后显示时间。如果是,那么代码是什么?我上面的代码不起作用。谢谢。 – user1107173