一. DatePickerDialog中包含一个DatePicker对象用于以界面形式选择时间,使用弹窗形式显示.
二.需求: 两个TextView用来点击 设置 显示 开始结束时间段
1.选择开始时间后,结束时间不能选择早于开始时间的设置
2.选择结束时间后,开始时间不能选择晚于结束时间的设置
@OnClick({R.id.start_time,R.id.close_time})
public void onClick(View v) {
switch (v.getId()) {
case R.id.start_time:
showDateDialog(1);
break;
case R.id.close_time:
showDateDialog(2);
break;
}
}
String start_time="";
String end_time="";
//number参数表示设置 开始:1 或 结束:2 时间
public void showDateDialog(final int number){
//获得当前时间 DatePicker默认显示
Calendar calendar=Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
//SimpleDateFromat转变表示时间的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//实例化DatePickerDialog对象 并设置时间选择监听
DatePickerDialog dp = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
log(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
switch (number) {
case 1:
//为什么这么设置时间格式? 本人项目服务器要求这么传 哈哈
start_time = year + "-" + (monthOfYear + 1) + "-" + dayOfMonth;
break;
case 2:
end_time = year + "-" + (monthOfYear + 1) + "-" + dayOfMonth;
break;
}
}
}, year, month, day);
//当开始时间已经选则而且是点击结束时间弹出picker
if(!TextUtils.isEmpty(start_time)&&number==2){
try {
Date date=sdf.parse(start_time);
//设置最小可选择时间
dp.getDatePicker().setMinDate(date.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
}
//当结束时间已经选择而且是点击开始时间弹出的picker
if(!TextUtils.isEmpty(end_time)&&number==1){
try {
Date date=sdf.parse(end_time);
//设置最大可选择时间
dp.getDatePicker().setMaxDate(date.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
}
dp.show();
}