iOS 时间选择器 支持月 日

直接贴代码吧,有用不到的地方 自己处理删除

@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];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值