Android,检查日期选择器中的日期是否在未来
Android, check that a date from datepicker is not in the future
在我的 activity 中,用户可以通过日期选择器 select 一个日期。我要确保 selected 日期不在未来。
到目前为止得到了什么:
private String textStart="";
private String textEnd="";
private String setToday="";
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
setToday = day+"/"+(month+1)+"/"+year;
当我从日期选择器中选择日期时
private DatePickerDialog.OnDateSetListener myDateListener
= new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
// arg1 = year
// arg2 = month
// arg3 = day
showDateStart(arg1, arg2 + 1, arg3);
}
调用方法 showDateStart 检查日期范围
private void showDateStart(int year, int month, int day) {
textDateStart.setText(new StringBuilder().append(day).append("/")
.append(month).append("/").append(year));
startStamp=true;
textStart = day+"/"+month+"/"+year;
if(textStart.compareTo(setToday)>0){
textStart = setToday;
Toast.makeText(getActivity(), "out of scope::"+setToday,
Toast.LENGTH_LONG).show();
textDateStart.setText(setToday);
}
}
但如果我选择 1/1/2016 则不起作用,因为今天是 22/2/2015 textStart 的值不超过 settoday
sorry for my mistake it first question.
作为奖励:是否可以将日期选择器限制为仅显示截至今天的日期?
您可以从 DatePickerDialog 获取基础 DatePicker(只需调用 getDatePicker())并使用以下方法设置其范围:
其中参数是默认时区自 1970 年 1 月 1 日以来的通常毫秒数 00:00:00。当然,您仍然需要计算这些值,但这对于日历 class 来说应该是微不足道的:只需获取当前日期并加上或减去 x 年。
更细心的 reader 会注意到上述设置器在 API 级别 11 之前不可用。如果您只针对该(或更新的)平台,那么您就很好去。如果您还想支持 Gingerbread 设备(Android 2.3 / API 9+ 级),您可以使用 backported version of DatePicker 代替。
从这里开始:Set Limit on the DatePickerDialog in Android?
在我的 activity 中,用户可以通过日期选择器 select 一个日期。我要确保 selected 日期不在未来。
到目前为止得到了什么:
private String textStart="";
private String textEnd="";
private String setToday="";
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
setToday = day+"/"+(month+1)+"/"+year;
当我从日期选择器中选择日期时
private DatePickerDialog.OnDateSetListener myDateListener
= new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
// arg1 = year
// arg2 = month
// arg3 = day
showDateStart(arg1, arg2 + 1, arg3);
}
调用方法 showDateStart 检查日期范围
private void showDateStart(int year, int month, int day) {
textDateStart.setText(new StringBuilder().append(day).append("/")
.append(month).append("/").append(year));
startStamp=true;
textStart = day+"/"+month+"/"+year;
if(textStart.compareTo(setToday)>0){
textStart = setToday;
Toast.makeText(getActivity(), "out of scope::"+setToday,
Toast.LENGTH_LONG).show();
textDateStart.setText(setToday);
}
}
但如果我选择 1/1/2016 则不起作用,因为今天是 22/2/2015 textStart 的值不超过 settoday
sorry for my mistake it first question.
作为奖励:是否可以将日期选择器限制为仅显示截至今天的日期?
您可以从 DatePickerDialog 获取基础 DatePicker(只需调用 getDatePicker())并使用以下方法设置其范围:
其中参数是默认时区自 1970 年 1 月 1 日以来的通常毫秒数 00:00:00。当然,您仍然需要计算这些值,但这对于日历 class 来说应该是微不足道的:只需获取当前日期并加上或减去 x 年。
更细心的 reader 会注意到上述设置器在 API 级别 11 之前不可用。如果您只针对该(或更新的)平台,那么您就很好去。如果您还想支持 Gingerbread 设备(Android 2.3 / API 9+ 级),您可以使用 backported version of DatePicker 代替。
从这里开始:Set Limit on the DatePickerDialog in Android?