在我的活动中,用户可以通过datepicker选择日期。我要确保所选择的日期不在于未来。
到目前为止:
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;
当我从datepicker中选择日期时
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);
}
}
但是如果我选择2016年1月1日就行不通,因为今天是2015年2月22日textStart的价值不超过今天
抱歉,我的错误是第一个问题。
作为奖励:是否可以将日期选择器限制为仅显示截至今天的日期?
答案 0 :(得分:1)
您可以从DatePickerDialog获取基础DatePicker(只需调用getDatePicker())并使用以下命令设置其边界:
其中参数是自默认时区1970年1月1日1970:00 00:00:00以来的通常毫秒数。当然,您仍然需要计算这些值,但这对于Calendar类来说应该是微不足道的:只需要使用当前日期并添加或减去x年。
更细心的读者会注意到,在API级别11之前,前面提到的setter是不可用的。如果您只针对那个(或更新的)平台,那么您就可以了。如果你也想支持姜饼设备(Android 2.3 / API等级9+),你可以使用backported version of DatePicker代替。