【发布时间】:2015-06-25 07:09:31
【问题描述】:
我想根据当前时间和日期选择器时间设置具体时间。
如果用户选择下午 3:01,它会直接转到下午 3:30, 下午 3 点 20 分,然后是下午 3 点 45 分, 下午 3:35,然后是下午 4:00。 如果是下午 5:00,那么是下午 5:15。
因此用户将根据 3:00,3:15,3:30,3:45,4:00 等获得时间选项...
我已经实现了这一点,当我去下午 6:01 或将来的任何时间时,它都可以正常工作,除非我无法切换回下午 5:01(而当前时间是下午 3:00)
这个问题有什么解决办法或可能性吗?
试试下面的代码。
- (void)viewDidLoad {
[super viewDidLoad];
[self.datePicker addTarget:self action:@selector(datechanged) forControlEvents:UIControlEventValueChanged];
}
NSDate *date = [self.datePicker date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSMinuteCalendarUnit | NSHourCalendarUnit |NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:date];
NSInteger minute = [components minute];
NSInteger hour = [components hour];
if ([components minute] == 0)
{
[components setMinute:15];
}
else
{
NSInteger result = (minute / 15);
if (result == 0)
{
[components setMinute:30];
}
else if(result == 2 || result == 1)
{
[components setMinute:45];
}
else if (result == 3)
{
[components setMinute:60];
}
}
NSDate *newDate = [calendar dateFromComponents: components];
[self.datePicker setMinimumDate:newDate];
[self.datePicker reloadInputViews];
【问题讨论】:
-
您的具体问题是什么??
-
假设现在是下午 4 点,我选择下午 6:01 的时间,然后它会转到下午 6:30,这很好,但如果我将它切换回下午 5:01,它应该会转到下午 5:30但是 UIControlEventValueChanged 是在更改后调用的,而不是在更改后调用,因此 UIDatePicker 将其视为下午 7:01 而不是下午 5:01。试试这段代码你会明白我在说什么。
-
您正在设置 ` [self.datePicker setMinimumDate:newDate];` 这就是为什么它不允许您将时间设置回 ` 5:01 PM`
标签: ios uidatepicker nsdatecomponents