UIDatePicker设置最小和最大小时

如何设置UIDatePicker的最小时间和最大时间? 一切都有可能吗?

我知道如何设置最小和最大date:

[datePicker setMinimumDate:today]; [datePicker setMaximumDate:nextMonthDay];

我想要实现的是在select器用户可以select从上午8点到晚上10点每一天。

谢谢。

希望以下代码可以帮助你。

- (IBAction)dataPickerValueChanged:(UIDatePicker *)sender { NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:[testDatePicker date]]; if ([dateComponents hour] > 8 && [dateComponents hour] < 22) { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Error!" message:@"This time cant be selected" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles: nil]; [alert show]; return; } lblDate.text = [sender date]; } 
 NSDateComponents *components = [[NSCalendar currentCalendar] components:NSIntegerMax fromDate:self.datePicker.date]; [components setHour:hour]; [components setMinute:minutes]; [components setSeconds:seconds]; NSDate *date [[NSCalendar currentCalendar] dateFromComponents:components]; self.datePicker.minimumDate = date; //same for maximumDate do this. 

您必须确保您的最低date是最高date的上午8点和晚上10点。 NSDateFormatter将帮助你创build你想要的date对象。

这工作在“时间模式”,否则选定的答案应该工作不直观

  // minimum time components.hour = 0 components.minute = 0 let minTime = calendar.date(from: components) // max time components.hour = 23 components.minute = 59 let maxTime = calendar.date(from: components) // selected value current time or saved time let selectedDate = Date() // or saved time let nowComp = calendar.dateComponents([.hour, .minute], from: selectedDate) components.hour = nowComp.hour components.minute = nowComp.minute let selectedTime = calendar.date(from: components)! 

玩的价值和使用如下

  datePicker.datePickerMode = .time datePicker.date = selectedTime datePicker.minimumDate = minTime datePicker.maximumDate = maxTime