Android日期选择器可以设置起始日期和终止日期

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();

}

}

}

5.演示效果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值