본문 바로가기

android 안드로이드 DatePickerDialog 날짜 지정하기 제한하기. (setMinDate setMaxDate)

android 안드로이드 DatePickerDialog 날짜 제한하기.

(feat. 열때 날짜 지정하기)


안드로이드 DatePickerDialog 사용 시, 날짜 선택범위를 지정하는 방법을 알아보겠습니다.


<ex>

picked Date (pickedDate) = 2018-02-12

minimum Date (minDate) = 2018-02-10

maximum Date (maxDate) = 2018-02-17


<src>


Calendar pickedDate = Calendar.getInstance();
Calendar minDate = Calendar.getInstance();
Calendar maxDate = Calendar.getInstance();

pickedDate.set(2018,2-1,12);

DatePickerDialog datePickerDialog = new DatePickerDialog(
ThisActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Toast.makeText(getApplicationContext(),"select date : "+ year + "-"+(month+1)+"-"+dayOfMonth,Toast.LENGTH_LONG).show();
}
},
//2018-2-12
pickedDate.get(Calendar.YEAR),
pickedDate.get(Calendar.MONTH),
pickedDate.get(Calendar.DATE)
);


minDate.set(2018,2-1,10);
datePickerDialog.getDatePicker().setMinDate(minDate.getTime().getTime());

maxDate.set(2018,2-1,17);
datePickerDialog.getDatePicker().setMaxDate(maxDate.getTimeInMillis());


datePickerDialog.show();


<reference>

- 보통 DB에서 date 값은 Stirng 형으로 받게 됩니다.

  이런 경우에는 String -> Date -> Calendar 로 형변환을 해주면 됩니다.

 

public static SimpleDateFormat datetimeFormat_Date = new SimpleDateFormat("yyyy-MM-dd");
String mDateStr = "2018-02-12";          // 버튼값 mDateStr 에 넣기
Calendar calendar = Calendar.getInstance();
Calendar minDate = Calendar.getInstance();
Calendar maxDate = Calendar.getInstance();

Date date = new Date();

try {
date = BasicInfo.datetimeFormat_Date.parse(mDateStr);

} catch(Exception ex) {
Log.d(TAG, "Exception in parsing date : " + date);
}
calendar.setTime(date);

DatePickerDialog datePickerDialog = new DatePickerDialog(
TourDateInsertActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

}
},
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH)
);

minDate.set(2018,2-1,10);
datePickerDialog.getDatePicker().setMinDate(minDate.getTime().getTime());

maxDate.set(2018,2-1,17);
datePickerDialog.getDatePicker().setMaxDate(maxDate.getTimeInMillis());


datePickerDialog.show();






<result>