欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

11.实现一个android日期选择器

程序员文章站 2022-05-01 17:02:08
...

//第一步添加依赖

//日期选择器依赖 implementation 'com.contrarywind:Android-PickerView:3.2.7'

 


//------------直接上代码 简单

private void initView() {
        mShengRi2 = (RelativeLayout) findViewById(R.id.mShengRi2);
        mRiQi = (TextView) findViewById(R.id.mRiQi);



//点击事件里调用
        mShengRi2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initTimePicker1();
                pvTime.setDate(Calendar.getInstance());//注:根据需求来决定是否使用该方法(一般是精确到秒的情况),此项可以在弹出选择器的时候重新设置当前时间,避免在初始化之后由于时间已经设定,导致选中时间与当前时间不匹配的问题。
                pvTime.show();
            }
        });

//系统原生日期选择器
//        Calendar ca = Calendar.getInstance();
//        mYear = ca.get(Calendar.YEAR);
//        mMonth = ca.get(Calendar.MONTH);
//        mDay = ca.get(Calendar.DAY_OF_MONTH);

//        mShengRi2.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                new DatePickerDialog(MainActivity.this, onDateSetListener, mYear, mMonth, mDay).show();
//            }
//        });
    }
//系统原生日期选择器
//    private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
//
//        @Override
//        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
//            mYear = year;
//            mMonth = monthOfYear;
//            mDay = dayOfMonth;
//            String days;
//            if (mMonth + 1 < 10) {
//                if (mDay < 10) {
//                    days = new StringBuffer().append(mYear).append("年").append("0").
//                            append(mMonth + 1).append("月").append("0").append(mDay).append("日").toString();
//                } else {
//                    days = new StringBuffer().append(mYear).append("年").append("0").
//                            append(mMonth + 1).append("月").append(mDay).append("日").toString();
//                }
//
//            } else {
//                if (mDay < 10) {
//                    days = new StringBuffer().append(mYear).append("年").
//                            append(mMonth + 1).append("月").append("0").append(mDay).append("日").toString();
//                } else {
//                    days = new StringBuffer().append(mYear).append("年").
//                            append(mMonth + 1).append("月").append(mDay).append("日").toString();
//                }
//
//            }
//            mRiQi.setText(days);
//        }
//    };


    private void initTimePicker1() {//选择出生年月日
        //控制时间范围(如果不设置范围,则使用默认时间1900-2100年,此段代码可注释)
        //因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11
        Date curDate = new Date(System.currentTimeMillis());//获取当前时间
        SimpleDateFormat formatter_year = new SimpleDateFormat("yyyy ");
        String year_str = formatter_year.format(curDate);
        int year_int = (int) Double.parseDouble(year_str);


        SimpleDateFormat formatter_mouth = new SimpleDateFormat("MM ");
        String mouth_str = formatter_mouth.format(curDate);
        int mouth_int = (int) Double.parseDouble(mouth_str);

        SimpleDateFormat formatter_day = new SimpleDateFormat("dd ");
        String day_str = formatter_day.format(curDate);
        int day_int = (int) Double.parseDouble(day_str);


        Calendar selectedDate = Calendar.getInstance();//系统当前时间
        Calendar startDate = Calendar.getInstance();
        startDate.set(1900, 0, 1);
        Calendar endDate = Calendar.getInstance();
        endDate.set(year_int, mouth_int - 1, day_int);

        //时间选择器
        pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                // 这里回调过来的v,就是show()方法里面所添加的 View 参数,如果show的时候没有添加参数,v则为null
                /*btn_Time.setText(getTime(date));*/

                mRiQi.setText(getTime(date));
            }
        })

                .setType(new boolean[]{true, true, true, false, false, false}) //年月日时分秒 的显示与否,不设置则默认全部显示
                .setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒
                .isCenterLabel(false)
                .setDividerColor(Color.parseColor("#b3b3b3"))
                .setTextColorCenter(Color.BLACK)//设置选中项的颜色
                .setTextColorOut(Color.parseColor("#b3b3b3"))//设置没有被选中项的颜色
                .setContentSize(21)
                .setDate(selectedDate)
                .setLineSpacingMultiplier(1.2f)
                .setTextXOffset(-10, 0,10, 0, 0, 0)//设置X轴倾斜角度[ -90 , 90°]
                .setRangDate(startDate, endDate)
//                .setBackgroundId(0x00FFFFFF) //设置外部遮罩颜色
                .setDecorView(null)
                .build();
    }

    private String getTime(Date date) {//可根据需要自行截取数据显示
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        return format.format(date);
    }
相关标签: android