2012-12-04 79 views
0

如何將最小和最大小時數設置爲UIDatePicker?完全有可能嗎?UIDatePicker設置最小和最大小時數

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

[日期選擇器setMinimumDate:今天] [datePicker setMaximumDate:nextMonthDay];

我想實現的是在選擇器用戶可以選擇從上午8點到晚上10點每一天。

謝謝。

回答

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

    } 
0

您必須確保您的最低日期時間爲上午8點&最晚日期的晚上10點。 NSDateFormatter將幫助你創建你想要的日期對象。

+0

它將僅有第一次約會的最後日期時間不是所有日期範圍內的所有日期 – Streetboy

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. 
+4

不要只在你的回答中張貼代碼,你需要解釋它。 – EternalHour

0

該作品在 「時間模式」,否則選擇的答案應該工作unintuitively雖然

// 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