0

如何将最小和最大小时设置为 UIDatePicker ?有可能吗?

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

[datePicker setMinimumDate: 今天]; [datePicker setMaximumDate: nextMonthDay];

我想要实现的是,在选择器中,用户可以每天从上午 8 点到晚上 10 点进行选择。

谢谢。

4

4 回答 4

1

希望以下代码对您有所帮助。

    - (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];

    }
于 2012-12-04T11:20:37.247 回答
1
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.
于 2015-01-12T07:14:46.797 回答
1

这适用于“时间模式”,否则选择的答案应该不直观地工作

    // 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 
于 2017-04-13T05:20:20.100 回答
0

您必须确保最短日期的时间是上午 8 点和最大日期的晚上 10 点。NSDateFormatter将帮助您根据需要创建日期对象。

于 2012-12-04T10:01:25.900 回答