Skip to content

Android:DatePickerDialog

DatePickerDialog 用来设置日期。基本用法:

java
 Calendar mCalendar = Calendar.getInstance();
 //格式化日期
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
 
 DatePickerDialog pickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker arg0, int year, int month, int day) {
                mCalendar.set(year, month, day);//将点击获得的年月日获取到calendar中。
                Toast.makeText(this, format.format(mCalendar.getTime()),Toast.LENGTH_LONG).show(); 
            }
        },mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
		//设置最大可选日期
        pickerDialog.getDatePicker().setMaxDate((new Date()).getTime());
        pickerDialog.show();

把上述代码放在 viewclick 时间监听中便可触发,并且默认选择的日期是当前日期。

但在实际应用中,我们可能需要默认显示的是传来的值,如生日等,如何做?

上面代码中,在实例化 DatePickerDialog 时传入的 mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH) ,便是用来设置默认选择的日期,我们可以把传来的日期转化为 Calendar 对象即可,代码如下:

java
 Calendar mCalendar = Calendar.getInstance();
 //格式化日期
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
 
 String str = "1988-11-11"; //这是可以是传来的日期,也可从 `view`获取
 if (str != null){
            try {
                Date date = format.parse(str);
                mCalendar.setTime(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
 
 DatePickerDialog pickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker arg0, int year, int month, int day) {
                mCalendar.set(year, month, day);//将点击获得的年月日获取到calendar中。
                Toast.makeText(this, format.format(mCalendar.getTime()),Toast.LENGTH_LONG).show(); 
            }
        },mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
		//设置最大可选日期
        pickerDialog.getDatePicker().setMaxDate((new Date()).getTime());
        pickerDialog.show();

打开日期对话框时,默认选择的便是 1988-11-11

亲手创建自己所需的软件,是程序员的幸运。