Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

同时设置最大日期和最小日期,出现错误 #9

Closed
EdwardBX opened this issue Nov 6, 2017 · 9 comments
Closed

同时设置最大日期和最小日期,出现错误 #9

EdwardBX opened this issue Nov 6, 2017 · 9 comments

Comments

@EdwardBX
Copy link

EdwardBX commented Nov 6, 2017

- (void)showDatePicker {
    PGDatePicker *datePicker = [[PGDatePicker alloc] init];
    datePicker.delegate = self;
    datePicker.datePickerMode = PGDatePickerModeYearAndMonth;
    
    NSDateFormatter *dataFormant = [[NSDateFormatter alloc] init];
    [dataFormant setDateFormat: @"yyyyMM"];
    NSString *newtime = [dataFormant stringFromDate:[NSDate date]];
    
    datePicker.maximumDate = [dataFormant dateFromString:newtime];
    
    if ([EMUtil isValidString: self.model.from]) {
        if (!self.chooseFrom) {
            //选择了开始时间再去选结束时间
            NSDate *mindate = [dataFormant dateFromString:self.model.from];
            datePicker.minimumDate = mindate;
        }
    }
    
    if ([EMUtil isValidString: self.model.to]) {
        if (self.chooseFrom) {
            // 选择了结束时间再去选开始时间
            NSDate *maxdate = [dataFormant dateFromString:self.model.to];
            datePicker.maximumDate = maxdate;
        }
    }
    
    [datePicker show];
} 

目前需求是选择开始时间和结束时间,现在选择了开始时间,想要限制结束时间选择框的选择范围在开始时间和当前时间之间。以上是代码。
当[datePicker show]执行后,选择框中的日期范围不对。
请看一下是我的代码有问题,还是这个库实现的有问题。谢谢。

@xiaozhuxiong121
Copy link
Owner

什么问题,具体描述一下操作步骤以及出现的错误

@EdwardBX
Copy link
Author

EdwardBX commented Nov 7, 2017

麻烦看一下,谢谢

@xiaozhuxiong121
Copy link
Owner

2017-11-07 9 38 35

这样去设置,用 NSDate+PGCategory类所定义的方法去设置最大日期和最小日期

@EdwardBX
Copy link
Author

EdwardBX commented Nov 7, 2017

按照这个方法设置了,选了开始时间2017-08,再去选结束时间,这是结束时间框的显示,还是不对。
tmp7fc80b72

- (void)showDatePicker {
    PGDatePicker *datePicker = [[PGDatePicker alloc] init];
    datePicker.delegate = self;
    datePicker.datePickerMode = PGDatePickerModeYearAndMonth;
    
    NSDateFormatter *dataFormant = [[NSDateFormatter alloc] init];
    [dataFormant setDateFormat: @"yyyyMM"];
    
    // 日历
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth;
    NSDateComponents *newdateCom = [calendar components:unit fromDate:[NSDate date]];
    datePicker.maximumDate = [NSDate setYear:newdateCom.year month:newdateCom.month];
    
    if ([EMUtil isValidString: self.model.from]) {
        if (!self.chooseFrom) {
            //选择了开始时间再去选结束时间
            NSDate *mindate = [dataFormant dateFromString:self.model.from];
            NSDateComponents *mindateCom = [calendar components:unit fromDate:mindate];
            datePicker.minimumDate = [NSDate setYear:mindateCom.year month:mindateCom.month];
        }
    }
    
    if ([EMUtil isValidString: self.model.to]) {
        if (self.chooseFrom) {
            // 选择了结束时间再去选开始时间
            NSDate *maxdate = [dataFormant dateFromString:self.model.to];
            NSDateComponents *maxdateCom = [calendar components:unit fromDate:maxdate];
            datePicker.maximumDate = [NSDate setYear:maxdateCom.year month:maxdateCom.month];
        }
    }
    
    [datePicker show];
}

@EdwardBX
Copy link
Author

EdwardBX commented Nov 7, 2017

就是同时设置 datePicker.maximumDate 和 datePicker.minimumDate 会有问题。单独设置datePicker.maximumDate 是好的。

@xiaozhuxiong121
Copy link
Owner

我设置同时设置过,我也一直在用,没有出现问题,你现在用的是版本多少,最新的是1.4.1
pod 'PGDatePicker', '>= 1.4.1'
你下载下demo,里面也有同时设置最小日期跟最大日期,也是没有问题的

@xiaozhuxiong121
Copy link
Owner

可以的话,你留个QQ,我加你,帮你看看

@EdwardBX
Copy link
Author

EdwardBX commented Nov 7, 2017

demo里面我看了,当最大时间和最小时间是同一年的时候,就会出错。

- (IBAction)yearAndMonthHandler:(id)sender {
    PGDatePicker *datePicker = [[PGDatePicker alloc]init];
    datePicker.delegate = self;
    [datePicker show];
    datePicker.minimumDate = [NSDate setYear:2015 month:5];
    datePicker.maximumDate = [NSDate setYear:2015 month:10];
    datePicker.datePickerMode = PGDatePickerModeYearAndMonth;
}

tmp0ad6ab6a

@EdwardBX
Copy link
Author

EdwardBX commented Nov 7, 2017

1.4.2 已修复。

@EdwardBX EdwardBX closed this as completed Nov 7, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants