在DatePicker中设置最小日期

时间:2016-08-08 14:15:06

标签: android

Hello Guys我是Android新手并面临问题我已经搜索了很多但没有使用DatePickerDialog框获得解决方案,而且当我运行应用程序时它也选择了以前的日期,尽管我已经设置了最小日期。我试过从当前时间减去1秒。和DatePicker从1990年1月开始。我希望它从今天开始并阻止以前的日期。谢谢......

public void OnButtonClickDate()

{
btn_date = (Button)findViewById(R.id.button);

edit_date = (EditText)findViewById(R.id.editText);

btn_date.setOnClickListener
(

 new View.OnClickListener() 
 {
    @Override
    public void onClick(View view) 
    {
     DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() 
     {
       @Override
       public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)                                                                             
       view.setMinDate(System.currentTimeMillis());
       edit_date.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
      }
    }, mYear, mMonth, mDay);
     datePickerDialog.show();
  }
}
);
}

2 个答案:

答案 0 :(得分:0)

尝试将代码调整为此。

btn_date = (Button) findViewById(R.id.button);
edit_date = (EditText) findViewById(R.id.editText);
DatePickerDialog datePickerDialog = new
        DatePickerDialog(MainActivity.this,
        new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year,
                                  int monthOfYear, int dayOfMonth) {

                datePickerDialog.setMinDate(System.currentTimeMillis());
                mYear = year;
                mMonth = monthOfYear;
                mDay = dayOfMonth;
                edit_date.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
            }
        }, mYear, mMonth, mDay);
datePickerDialog.setMinDate(System.currentTimeMillis());
btn_date.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                datePickerDialog.show();
            }
        }
);

Android日历视图是一系列错误。如果上述方法失败,您可以尝试从选择器中删除CalendarView。绕过这些错误的其他方法are described here

datePicker.setCalendarViewShown(false);

或者尝试使用a library来实现此功能

    compile "com.wdullaer:materialdatetimepicker:2.4.0"

答案 1 :(得分:0)

嘿,您可以使用以下代码示例在应用程序中设置最小日期:

 Date date = new Date();

    final long todayInMillis = date.getTime();
    final long thirteenyearMillis = 409968000000L;   
    final long eightyYearMillis = 2522880000000L;
    final long maxDate = todayInMillis - thirteenyearMillis;
    final long minDate = todayInMillis - eightyYearMillis;

希望你能从上面的例子中得到一个想法...