我试图实现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。
我相信我非常接近,但我无法弄清楚剩下的逻辑。
答案 0 :(得分:1)
在伪代码中:
currentTime = [NSDate date];
pickedTime = [value from picker]
if pickedTime - currentTime < 15 minutes {
pickedTime +=15
}
答案 1 :(得分:1)
尝试algo:targetMinTime = currentTime + 30 - (currentTime%15)