Android 날짜 선택기에서 미래 날짜를 선택하는 방법
Android 날짜 선택기에서 미래 날짜를 선택하는 방법
자바 코드 :
mExpireDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// To show current date in the datepicker
final Calendar mcurrentDate = Calendar.getInstance();
int mYear = mcurrentDate.get(Calendar.YEAR);
int mMonth = mcurrentDate.get(Calendar.MONTH);
int mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH);
DatePickerDialog mDatePicker = new DatePickerDialog(
EventRegisterActivity.this, new OnDateSetListener() {
public void onDateSet(DatePicker datepicker,
int selectedyear, int selectedmonth,
int selectedday) {
mcurrentDate.set(Calendar.YEAR, selectedyear);
mcurrentDate.set(Calendar.MONTH, selectedmonth);
mcurrentDate.set(Calendar.DAY_OF_MONTH,
selectedday);
SimpleDateFormat sdf = new SimpleDateFormat(
getResources().getString(
R.string.date_card_formate),
Locale.US);
mExpireDate.setText(sdf.format(mcurrentDate
.getTime()));
}
}, mYear, mMonth, mDay);
mDatePicker.setTitle(getResources().getString(
R.string.alert_date_select));
mDatePicker.show();
}
});
어떻게하나요?
를 가져옵니다 DatePicker
에서 DatePickerDialog
와 getDatePicker()
. 다음을 사용하여 최대 날짜를 현재 날짜로 설정하십시오 setMaxDate()
.
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
API 레벨 11이 필요합니다.
DatePickerDialog에서 getDatePicker (). setMaxDate (long)를 호출하여 오늘을 최대 날짜로 수 있습니다. 게시 한 스 니펫과 동일한 이름으로 함수를 업데이트 할 수 있습니다.
참고 :: DatePickerDialog는 내가 게시 한 링크에서 Android 문서에서 참조한 개체입니다.
@Override
protected Dialog onCreateDialog(int id) {
Calendar c = Calendar.getInstance();
int cyear = c.get(Calendar.YEAR);
int cmonth = c.get(Calendar.MONTH);
int cday = c.get(Calendar.DAY_OF_MONTH);
switch (id) {
case DATE_DIALOG_ID:
//start changes...
DatePickerDialog dialog = new DatePickerDialog(this, mDateSetListener, cyear, cmonth, cday);
dialog.getDatePicker().setMaxDate(System.currentTimeMillis());
return dialog;
//end changes...
}
return null;
}
제안을 시도하고 당신의 의견을 !!!
사용자가 미래 날짜를 선택하면 datepicker를 현재 날짜 (오늘)로 업데이트합니다.
다음 코드를 사용하여 선택한 날짜가 미래 날짜를 확인할 수 있습니다.
final Calendar cal = Calendar.getInstance();
datePickerDob.init(currentYear, currentMonth, currentDay,
new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Calendar selectedCal = Calendar.getInstance();
selectedCal.set(year, monthOfYear, dayOfMonth);
long selectedMilli = selectedCal.getTimeInMillis();
Date datePickerDate = new Date(selectedMilli);
if (datePickerDate.after(new Date())) {
datePickerDob.updateDate(cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH));
} else {
}
}
});
compareTo () 메소드를 사용할 수 있습니다.
datePickerDate.compareTo(new Date());
최고의 순서를 결정하십시오.
정해진 날짜를 지정합니다.
이 Date가 지정된 Date보다 작 으면 int <0, 같으면 0,이 Date가 더 크면 int> 0을 반환합니다.
다음 코드는 미래 날짜를 짓는 데 도움이됩니다.
달력 변수를 전역으로 선언합니다.
private Calendar myCalendar = Calendar.getInstance();
onCreate 메소드에 다음 코드를 등록하십시오.
DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
버튼 클릭에 다음 코드를 입력하십시오.
DatePickerDialog datePickerDialog=new DatePickerDialog(getActivity(), dateListener, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
//following line to restrict future date selection
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
datePickerDialog.show();
**new Way**
ed_date.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Calendar mcurrentDate=Calendar.getInstance();
year=mcurrentDate.get(Calendar.YEAR);
month=mcurrentDate.get(Calendar.MONTH);
day=mcurrentDate.get(Calendar.DAY_OF_MONTH);
final DatePickerDialog mDatePicker =new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday)
{
ed_date.setText(new StringBuilder().append(year).append("-").append(month+1).append("-").append(day));
int month_k=selectedmonth+1;
}
},year, month, day);
mDatePicker.setTitle("Please select date");
// TODO Hide Future Date Here
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
// TODO Hide Past Date Here
// mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis());
mDatePicker.show();
}
});
머티리얼 디자인 Datepicker를 사용하는 경우 :
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(this,
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show(getFragmentManager(), "datepicker");
datePickerDialog.setMaxDate(calendar);
// Custom Your Future Dates
// Example for today and next 3 days :- 3(NUMBER OF NEXT DAYS)*24*60*60*1000l
// As 24 represents hrs in day
// As 60 mins 60 secs and convert it to millisec
//Inside Class which implements DatePickerDialog.OnDateSetListener
private Calendar mCurrentDate;
//Inside OnCreate Method
mDateEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCurrentDate = Calendar.getInstance();
int year = mCurrentDate.get(Calendar.YEAR);
int month = mCurrentDate.get(Calendar.MONTH);
int day = mCurrentDate.get(Calendar.DAY_OF_MONTH);
DatePickerDialog mDatePickerDialog = new DatePickerDialog(this, this, year, month, day);
mDatePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis() + 3 * 24 * 60 * 60 * 1000 l);
}
});
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
mDateEditText.setText(dayOfMonth + "/" + month + "/" + year);
}
최대 날짜를 내일로 설정 코드의 마지막 숫자 1은 설정하려는 일 수를 나타냅니다.
pickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis() + (1000 * 60 * 60 * 24 * 1));
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
DatePickerDialog dialog = new DatePickerDialog(getActivity(), ondateSet, year, month, day);
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 1);
Date newDate = c.getTime();
dialog.getDatePicker().setMaxDate(newDate.getTime() - (newDate.getTime() % (24 * 60 * 60 * 1000)));
return dialog;
}
참조 URL : https://stackoverflow.com/questions/20970963/how-to-disable-future-dates-in-android-date-picker
'ProgramingTip' 카테고리의 다른 글
Parse는 얼마나 확장 가능합니까? (0) | 2020.12.31 |
---|---|
django 관리자 생성 후 사이트 일치 쿼리 가져 오기 오기가 존재하지 않음 발생 오류 (0) | 2020.12.31 |
신속하게 배열을 JSON 문자열로 변환 (0) | 2020.12.31 |
Cordova + Angularjs + 장치 준비 (0) | 2020.12.31 |
Android에서 알림의 가운데 텍스트 (0) | 2020.12.31 |