在 DatePIcker 中设置 MinDate 和 MaxDate
Set MinDate and MaxDate in DatePIcker
正在创建我正在显示的应用程序 DatePicker.Now 我想将 DatePicker 的最小日期设置为前两年和未来两年的最大日期 only.Selection 应基于当前 date.Suppose 当前日期是 23/11/2016 所以 datepicker 应该在 DatePicker 中显示日期到 23/11/2014 所有日期应该在 23/11/2014.And 之前被禁用,当我们点击 Datepicker 光标应该在当前 date.Created数据选择器
private void showDateDailog() {
final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {
year = selectedYear;
month = selectedMonth;
day = selectedDate;
((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/")
.append(month + 1).append("/").append(year));
}
}, year, month, day);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
datePickerDialog.show();
}
您可以从 DatePickerDialog 获取基础 DatePicker(只需调用 getDatePicker())并使用以下方法设置其范围:
setMinDate(long minDate)
setMaxDate(long maxDate)
其中参数是默认时区自 1970 年 1 月 1 日 00:00:00 以来的通常毫秒数。当然,您仍然需要计算这些值,但这对于日历 class 来说应该是微不足道的:只需传递当前日期并从中添加或减去 x 年..
您可以设置需要使用的 MinDate 和 MaxDate DatePicker
class.
class MDatePickerDialog extends DatePickerDialog {
MDatePickerDialog(Context c) {
super(c, null, 2016, 11, 23);
Date min = new Date(2018-1900, 4, 21);
DatePicker p = getDatePicker();
CalendarView cv = p.getCalendarView();
long cur = cv.getDate();
int d = cv.getFirstDayOfWeek();
p.setMinDate(min.getTime());
cv.setDate(cur + 1000L*60*60*24*40);
cv.setFirstDayOfWeek((d + 1) % 7);
cv.setDate(cur);
cv.setFirstDayOfWeek(d);
}
}
希望对您有所帮助。
要设置今天前两年的最小日期和两年后的最大日期,请使用以下代码:
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -2); // subtract 2 years from now
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c.add(Calendar.YEAR, 4); // add 4 years to min date to have 2 years after now
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
我相信这段代码确实可以帮助您解决问题。
这是您的修复代码 -
private void showDateDailog() {
final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {
year = selectedYear;
month = selectedMonth;
day = selectedDate;
((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/")
.append(month + 1).append("/").append(year));
}
}, year, month, day);
final Calendar calendar = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
//Min date setting part
cal.set(Calendar.MONTH, mm);
cal.set(Calendar.DAY_OF_MONTH, dd);
cal.set(Calendar.YEAR, yy - 2);
datePickerDialog.setMinDate(cal.getTimeInMillis());
//Maximum date setting part
Calendar calen = Calendar.getInstance();
calen.set(Calendar.MONTH, mm);
calen.set(Calendar.DAY_OF_MONTH, dd);
calen.set(Calendar.YEAR, yy + 2);
datePickerDialog.setMaxDate(calen.getTimeInMillis());
datePickerDialog.show();
}
正在创建我正在显示的应用程序 DatePicker.Now 我想将 DatePicker 的最小日期设置为前两年和未来两年的最大日期 only.Selection 应基于当前 date.Suppose 当前日期是 23/11/2016 所以 datepicker 应该在 DatePicker 中显示日期到 23/11/2014 所有日期应该在 23/11/2014.And 之前被禁用,当我们点击 Datepicker 光标应该在当前 date.Created数据选择器
private void showDateDailog() {
final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {
year = selectedYear;
month = selectedMonth;
day = selectedDate;
((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/")
.append(month + 1).append("/").append(year));
}
}, year, month, day);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
datePickerDialog.show();
}
您可以从 DatePickerDialog 获取基础 DatePicker(只需调用 getDatePicker())并使用以下方法设置其范围:
setMinDate(long minDate)
setMaxDate(long maxDate)
其中参数是默认时区自 1970 年 1 月 1 日 00:00:00 以来的通常毫秒数。当然,您仍然需要计算这些值,但这对于日历 class 来说应该是微不足道的:只需传递当前日期并从中添加或减去 x 年..
您可以设置需要使用的 MinDate 和 MaxDate DatePicker
class.
class MDatePickerDialog extends DatePickerDialog {
MDatePickerDialog(Context c) {
super(c, null, 2016, 11, 23);
Date min = new Date(2018-1900, 4, 21);
DatePicker p = getDatePicker();
CalendarView cv = p.getCalendarView();
long cur = cv.getDate();
int d = cv.getFirstDayOfWeek();
p.setMinDate(min.getTime());
cv.setDate(cur + 1000L*60*60*24*40);
cv.setFirstDayOfWeek((d + 1) % 7);
cv.setDate(cur);
cv.setFirstDayOfWeek(d);
}
}
希望对您有所帮助。
要设置今天前两年的最小日期和两年后的最大日期,请使用以下代码:
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -2); // subtract 2 years from now
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c.add(Calendar.YEAR, 4); // add 4 years to min date to have 2 years after now
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
我相信这段代码确实可以帮助您解决问题。
这是您的修复代码 -
private void showDateDailog() {
final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {
year = selectedYear;
month = selectedMonth;
day = selectedDate;
((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/")
.append(month + 1).append("/").append(year));
}
}, year, month, day);
final Calendar calendar = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
//Min date setting part
cal.set(Calendar.MONTH, mm);
cal.set(Calendar.DAY_OF_MONTH, dd);
cal.set(Calendar.YEAR, yy - 2);
datePickerDialog.setMinDate(cal.getTimeInMillis());
//Maximum date setting part
Calendar calen = Calendar.getInstance();
calen.set(Calendar.MONTH, mm);
calen.set(Calendar.DAY_OF_MONTH, dd);
calen.set(Calendar.YEAR, yy + 2);
datePickerDialog.setMaxDate(calen.getTimeInMillis());
datePickerDialog.show();
}