UIDatePicker - 仅选择从现在开始15分钟的时间

时间:2014-07-01 15:06:25

标签: ios uidatepicker

我试图实现UIDatePicker,只允许用户选择距离当前时间15分钟或更长时间的日期。分钟成分间隔为15分钟。用户无法选择已经过的时间。这就是我所尝试的,我相信我非常接近,但我不确定我缺少什么来完善它;

        UIDatePicker * datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 44, 320, 163)];
        datePicker.clipsToBounds=YES;
        datePicker.datePickerMode=UIDatePickerModeTime;
        datePicker.minuteInterval = 15;
        datePicker.minimumDate=[[NSDate date] dateByAddingTimeInterval:60*15];
        [datePicker addTarget:self action:@selector(dateChanged:)
             forControlEvents:UIControlEventValueChanged];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat: @"EE dd MMM"];
        NSString *weekday = [dateFormatter stringFromDate:[NSDate date]];
        [dateFormatter setDateFormat:@"HH:mm"];
        self.time = [NSString stringWithFormat:@"%@ - Time: %@",weekday,[dateFormatter stringFromDate:datePicker.date]];//self.time is an NSString

这是我的dateChanged方法:

- (void)dateChanged:(UIDatePicker *)sender {

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: @"EE dd MMM"];
NSString *weekday = [dateFormatter stringFromDate: sender.date];
[dateFormatter setDateFormat:@"HH:mm"];

self.time =[NSString stringWithFormat:@"%@ - Time: %@",weekday,[dateFormatter stringFromDate:sender.date]];

}

然而,如果它15:56而我选择16:00,我得到16:12。这是不正确的。我不应该选择16:00,我应该只能选择16:15。另一个例子,如果它的16:10,我应该只能选择16:30.etc。我有点困难。它将它四舍五入到最近的一刻钟。如有任何问题,请告诉我。

用户只能在15分钟的时间间隔内选择,并且必须距离当前的15分钟间隔15分钟。例如,如果是10:50,则用户应该只能选择11:15。如果是10:20,则用户应该只能选择10:45。

我相信我非常接近,但我无法弄清楚剩下的逻辑。

2 个答案:

答案 0 :(得分:1)

在伪代码中:

currentTime = [NSDate date]; 
pickedTime = [value from picker]

if pickedTime - currentTime < 15 minutes {
 pickedTime +=15
}

答案 1 :(得分:1)

尝试algo:targetMinTime = currentTime + 30 - (currentTime%15)

相关问题