ven*_*enu 56 android datepicker android-datepicker
如何在Android日期选择器中禁用未来日期
Java代码:
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();
}
});
Run Code Online (Sandbox Code Playgroud)
请帮忙怎么做?
laa*_*lto 161
获取DatePicker
来自DatePickerDialog
与getDatePicker()
.将最大日期设置为当前日期setMaxDate()
:
mDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)
需要API级别11.
Sat*_*jee 16
您可以在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;
}
Run Code Online (Sandbox Code Playgroud)
试试这个,并提供反馈!
小智 6
// 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);
}
Run Code Online (Sandbox Code Playgroud)
以下代码可帮助您禁用将来的日期:
全局声明日历变量:
private Calendar myCalendar = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
将以下代码放入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();
}
};
Run Code Online (Sandbox Code Playgroud)
在按钮上单击,输入以下代码:
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();
Run Code Online (Sandbox Code Playgroud)
如果用户选择将来的日期,则将日期选择器更新为当前日期(今天)
您可以使用以下代码来检查所选日期是否为将来的日期
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 {
}
}
});
Run Code Online (Sandbox Code Playgroud)
您也可以使用compareTo()方法
datePickerDate.compareTo(new Date());
Run Code Online (Sandbox Code Playgroud)
将接收者与指定的日期进行比较,以确定相对的顺序。
参数date一个要比较的日期。
如果此Date小于指定的Date,则返回int <0;如果等于,则返回0;如果此Date大于,则返回int> 0。