首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIDatePickerModeTime限制时间选择或设定时间范围

UIDatePickerModeTime限制时间选择或设定时间范围
EN

Stack Overflow用户
提问于 2016-02-20 04:26:05
回答 2查看 639关注 0票数 0

我已经编写了下面的代码来带来一个pickerView敌人选择时间。它现在工作得很好,我想知道我怎样才能在上午9点到下午5点之间设定一个时间范围请有人帮助我达到限制上午9点到下午5点之间的时间选择的要求。

代码语言:javascript
复制
@interface CleaningDetails ()<UITextFieldDelegate>
{
IBOutlet TextFieldValidator *cleanTime;
UIDatePicker *time;
}
@implementation
       time = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
        time.datePickerMode = UIDatePickerModeTime;
        time.minuteInterval = 30;
        // set change the inputView (default is keyboard) to UIPickerView
        [self.cleanTime setInputView:time];
        // add a toolbar with Cancel & Done button
        UIToolbar *toolBar1 = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
        toolBar1.barStyle = UIBarStyleBlackOpaque;
        UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(showSelectedTime)];
        UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelTouched:)];
        // the middle button is to make the Done button align to right
        [toolBar1 setItems:[NSArray arrayWithObjects:cancelButton, [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], doneButton, nil]];
        [self.cleanTime setInputAccessoryView:toolBar1];

我对这个编程和objective非常陌生,特别是任何人都能建议我一些来源或任何想法来完成这个需求。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-16 06:10:28

UIDatePicker只支持最小和最大日期,而不是时间。但是您将使用时间间隔设置时间,使用下面的代码并设置您的时间,

代码语言:javascript
复制
NSDate *minDate = [NSDate new];
// One hour from now
NSDate *maxDate = [[NSDate alloc] initWithTimeIntervalSinceNow:60*60];

UIDatePicker *picker = [UIDatePicker new];
[picker setDatePickerMode:UIDatePickerModeDateAndTime];
[picker setMinimumDate:minDate];
[picker setMaximumDate:maxDate];

希望能帮上忙

票数 2
EN

Stack Overflow用户

发布于 2016-04-16 06:41:39

试试这段代码,

代码语言:javascript
复制
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    startTime.text = [NSString stringWithFormat:@"%@",[self beginningOfDay:[NSDate new]]];

    endTime.text = [NSString stringWithFormat:@"%@",[self endOfDay:[NSDate new]]];

}

    -(NSDate *)beginningOfDay:(NSDate *)date
    {
        NSCalendar *cal = [NSCalendar currentCalendar];
        NSDateComponents *components = [cal components:( NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:date];

        [components setHour:9];
        [components setMinute:0];
        [components setSecond:0];

        return [cal dateFromComponents:components];

    }

    -(NSDate *)endOfDay:(NSDate *)date
    {
        NSCalendar *cal = [NSCalendar currentCalendar];
        NSDateComponents *components = [cal components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:date];

        [components setHour:17];
        [components setMinute:0];
        [components setSecond:0];

        return [cal dateFromComponents:components];

    }

您将获得返回时间,然后将UTC时间转换为本地时间,

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35519100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档