1.日期选择器
可以在客户端设置日期的起始值,结束值和当前显示的默认日期值,此方法可供HTML页面调用(需要修改一下增加一个JS调用Android的接口),客户端可以直接调用。
2.日期显示的风格样式
在styles.xml文件中添加如下样式
<!--日期选择样式-->
<style name="datePickerPanelStyle" parent="android:Theme.Holo.Light.Panel"/>
3.创建日期选择器 工具类
public class DatePickerUtil {
private static String TAG=DatePickerUtil.class.getSimpleName();
//默认选中的时间
private String defaultDate;
//时间区间【startDate,endDate】
private String startDate;
private String endDate;
private SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
private Context context;
private DatePickerDialog datePickerDialog;
private DatePicker datePicker;
private Calendar calendar;
public DatePickerUtil(Context context) {
this.context = context;
calendar=Calendar.getInstance();
}
//{"defaultDate":"2016-11-12","startDate":"2016-09-01","endDate":"2017-01-12"}
public void showDatePicker(String jsonDateStr){
try {
JSONObject obj=new JSONObject(jsonDateStr);
defaultDate=obj.optString("defaultDate");
startDate=obj.optString("startDate");
endDate=obj.optString("endDate");
//从默认日期中取出年月日
int defaultYMD[]=getYMD(defaultDate);
// 引用日期显示的风格样式
datePickerDialog=new DatePickerDialog(context, R.style.datePickerPanelStyle, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
calendar.set(year,monthOfYear,dayOfMonth);
Date selectDate=calendar.getTime();
Alert.alertMsg("选中的日期是:"+sdf.format(selectDate));
}
},defaultYMD[0],defaultYMD[1],defaultYMD[2]);
datePicker=datePickerDialog.getDatePicker();
//设置日期选择器的最小时间
int startYMD[]=getYMD(startDate);
calendar.set(startYMD[0],startYMD[1],startYMD[2]);
Date minDate=calendar.getTime();
calendar.clear();
datePicker.setMinDate(minDate.getTime());
//设置日期选择器的最大时间
int endYMD[]=getYMD(endDate);
calendar.set(endYMD[0],endYMD[1],endYMD[2]);
Date maxDate=calendar.getTime();
calendar.clear();
datePicker.setMaxDate(maxDate.getTime());
//显示日期选择器
datePickerDialog.show();
} catch (JSONException e) {
e.printStackTrace();
}
}
//formatDateString格式为2016-11-01
private int[] getYMD(String formatDateString){
int[] YMD=new int[3];
//2016
YMD[0]= Integer.parseInt(formatDateString.substring(0,4));
//11
YMD[1]=Integer.parseInt(formatDateString.substring(formatDateString.indexOf("-")+1,formatDateString.lastIndexOf("-")))-1;
//01
YMD[2]=Integer.parseInt(formatDateString.substring(formatDateString.lastIndexOf("-")+1,formatDateString.length()));
CCLog.d(TAG,"YMD="+YMD[0]+" "+YMD[1]+" "+YMD[2]);
return YMD;
}
}
4.在Activity中调用设置日期参数,调用日期选择器
public class DatePickerActivity extends Activity {
private Button dateBtn;
private DatePickerUtil datePickerUtil;
private JSONObject jsonDateObj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.date_picker_activity);
dateBtn=(Button)findViewById(R.id.dateBtn);
datePickerUtil=new DatePickerUtil(this);
try {
//在客户端设置日期的起始值,结束值和当前显示的日期值
jsonDateObj=new JSONObject();
jsonDateObj.put("defaultDate","2016-11-12");
jsonDateObj.put("startDate","2016-09-01");
jsonDateObj.put("endDate","2017-01-12");
dateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//传入日期字符串json格式
datePickerUtil.showDatePicker(jsonDateObj.toString());
}
});
} catch (JSONException e) {
e.printStackTrace();
}
}
}