直接贴代码吧,有用不到的地方 自己处理删除
@interface CanlendarViewController ()<UIPickerViewDelegate,UIPickerViewDataSource>
{
UIButton * selectedBtn;
UIView * month_top;
UIView * day_top;
UILabel * month_Lb;
UIButton * dayStart_btn;
UIButton * dayEnd_btn;
UIPickerView * pickerView_month;
UIPickerView * pickerView_day;
NSMutableArray * years_Muarr;
NSMutableArray * months_MuArr;
NSMutableArray * days_Arr;
NSInteger minYear;//最早时间点年
NSInteger minMonth;//最早时间点月
NSInteger minDay;//最早时间点日
NSInteger currentYear;//系统当前年
NSInteger currentMonth;//系统当前月
NSInteger currentDay;//系统当前日
NSString * selectedYear;//当前选中的年
NSString * selectedMonth;//当前选中的月
NSString * selectedDay;//当前选中的日
NSString * selectedYear_Month;//当前选中的年_月选择
}
@end
@implementation CanlendarViewController
- (void)rightItemButtonAction:(UIButton *)button
{
NSString * blockStr = @"";
if (selectedBtn.selected) {
//按日
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy.MM.dd"];
NSDate * startDate = [formatter dateFromString:dayStart_btn.titleLabel.text];
NSDate * endDate = [formatter dateFromString:dayEnd_btn.titleLabel.text];
NSTimeInterval startTimeInter = [startDate timeIntervalSince1970];
NSTimeInterval endTimeInter = [endDate timeIntervalSince1970];
if (startTimeInter > endTimeInter) {
blockStr = [NSString stringWithFormat:@"%@-%@",dayEnd_btn.titleLabel.text,dayStart_btn.titleLabel.text];
}else{
blockStr = [NSString stringWithFormat:@"%@-%@",dayStart_btn.titleLabel.text,dayEnd_btn.titleLabel.text];
}
}else{
//按月
blockStr = month_Lb.text;
}
if (self.SelectedBlock) {
self.SelectedBlock(blockStr);
}
[self.navigationController popViewControllerAnimated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
minYear = 2016;
minMonth = 1;
minDay = 1;
[self currentYearAndMonthAndDay];
[self setRightItemWithFrame:CGRectMake(0, 0, 30, 40) withImageName:nil withTitle:@"完成"];
[self setLeftItemWithFrame:CGRectMake(0, 0, 30, 40) withImageName:nil withTitle:@"取消"];
years_Muarr = [NSMutableArray arrayWithCapacity:0];
months_MuArr = [NSMutableArray arrayWithCapacity:0];
days_Arr = [NSMutableArray arrayWithCapacity:0];
[self calculationYears];
[self calculationMonthsAndDays];
self.title = @"选择时间";
[self setup];
dayStart_btn.selected = YES;//默认开启起始日选中
}
- (void)calculationYears
{
if (minYear == currentYear) {
[years_Muarr addObject:[NSString stringWithFormat:@"%ld年",currentYear]];
}else{
for (int i = (int)minYear; i <= (int)currentYear; i ++) {
[years_Muarr addObject:[NSString stringWithFormat:@"%d年",i]];
}
}
}
- (void)currentYearAndMonthAndDay
{
NSDate * nowDate = [NSDate date];
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy.MM.dd"];
NSString * canlendarStr = [formatter stringFromDate:nowDate];
NSArray * canlendarArr = [canlendarStr componentsSeparatedByString:@"."];
currentYear = [canlendarArr[0] integerValue];
currentMonth = [canlendarArr[1] integerValue];
currentDay = [canlendarArr[2] integerValue];
selectedYear_Month = canlendarArr[0];