如何为日期选择器设置具体的时间和分钟数?
How to set specific time & minutes to datepicker?
我想根据当前时间和日期选择器时间设置具体时间。
就像用户选择 3:01PM 一样,它会直接转到 3:30PM,
3:20PM 然后 3:45PM,
3:35Pm 然后 4:00PM。
如果 5:00PM 那么 5:15pm.
因此用户将根据 3:00、3:15、3:30、3:45、4:00 等为用户提供时间选项...
我已经做到了这一点 & 当我去 6:01Pm 或以后的任何时候都可以正常工作,除了我不能切换回 5:01Pm (而当前时间是 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];
您可以像这样设置日期更改方法,允许用户设置日期。
- (IBAction)datechanged:(UIDatePicker *)sender {
NSDate *date = [self.datePicker date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitMinute | NSCalendarUnitHour |NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear) fromDate:date];
NSInteger minute = [components minute];
NSInteger hour = [components hour];
NSLog(@"%li",(long)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];
NSLog(@"%@",newDate);
//[self.datePicker setMinimumDate:newDate];
[self.datePicker setDate:newDate];
[self.datePicker reloadInputViews];
}
更新 1
您可以在 viewDidLoad
方法中设置最小日期(意味着不允许过去的时间)。
- (void)viewDidLoad {
[super viewDidLoad];
[self.datePicker addTarget:self action:@selector(datechanged) forControlEvents:UIControlEventValueChanged];
[self.datePicker setMinimumDate:[NSDate date]];
}
我这对你有帮助,
HTH,享受编码吧!
我想根据当前时间和日期选择器时间设置具体时间。
就像用户选择 3:01PM 一样,它会直接转到 3:30PM, 3:20PM 然后 3:45PM, 3:35Pm 然后 4:00PM。 如果 5:00PM 那么 5:15pm.
因此用户将根据 3:00、3:15、3:30、3:45、4:00 等为用户提供时间选项...
我已经做到了这一点 & 当我去 6:01Pm 或以后的任何时候都可以正常工作,除了我不能切换回 5:01Pm (而当前时间是 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];
您可以像这样设置日期更改方法,允许用户设置日期。
- (IBAction)datechanged:(UIDatePicker *)sender {
NSDate *date = [self.datePicker date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitMinute | NSCalendarUnitHour |NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear) fromDate:date];
NSInteger minute = [components minute];
NSInteger hour = [components hour];
NSLog(@"%li",(long)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];
NSLog(@"%@",newDate);
//[self.datePicker setMinimumDate:newDate];
[self.datePicker setDate:newDate];
[self.datePicker reloadInputViews];
}
更新 1
您可以在 viewDidLoad
方法中设置最小日期(意味着不允许过去的时间)。
- (void)viewDidLoad {
[super viewDidLoad];
[self.datePicker addTarget:self action:@selector(datechanged) forControlEvents:UIControlEventValueChanged];
[self.datePicker setMinimumDate:[NSDate date]];
}
我这对你有帮助,
HTH,享受编码吧!