Android日期时间选择控件,直接上代码:

importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.DialogInterface;importandroid.util.Log;importandroid.view.View;importandroid.widget.DatePicker;importandroid.widget.DatePicker.OnDateChangedListener;importandroid.widget.LinearLayout;importandroid.widget.TextView;importandroid.widget.TimePicker;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;/***日期时间选择控件使用方法:privateEditTextinputDate;//需要设置的日期时间文本编辑框privateString*initDateTime="2012年9月3日14:44",//初始日期时间值在点击事件中使用:*inputDate.setOnClickListener(newOnClickListener(){**@author*@OverridepublicvoidonClick(Viewv){DateTimePickDialogUtil*dateTimePicKDialog=new*DateTimePickDialogUtil(SinvestigateActivity.this,initDateTime);*dateTimePicKDialog.dateTimePicKDialog(inputDate);*<p/>*}});*/@SuppressLint("SimpleDateFormat")//publicclassDateTimePickDialogUtilimplementsOnDateChangedListener,OnTimeChangedListener{publicclassDateTimePickDialogUtilimplementsOnDateChangedListener{privateDatePickerdatePicker;privateTimePickertimePicker;privateAlertDialogad;privateStringdateTime;privateStringinitDateTime;privateActivityactivity;/***日期时间弹出选择框构造函数**@paramactivity:调用的父activity*@paraminitDateTime初始日期时间值,作为弹出窗口的标题和日期时间初始值*/publicDateTimePickDialogUtil(Activityactivity,StringinitDateTime){this.activity=activity;this.initDateTime=initDateTime;}publicvoidinit(DatePickerdatePicker){Calendarcalendar=Calendar.getInstance();if(!(null==initDateTime||"".equals(initDateTime))){calendar=this.getCalendarByInintData(initDateTime,1);}else{initDateTime=calendar.get(Calendar.YEAR)+"-"+calendar.get(Calendar.MONTH)+"-"+calendar.get(Calendar.DAY_OF_MONTH);}datePicker.init(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH),this);}/***弹出日期时间选择框方法**@paraminputDate:为需要设置的日期时间文本编辑框*@return*/publicAlertDialogdateTimePicKDialog(finalTextViewinputDate,StringstrStart,StringstrEnd){longmaxDate=0;longminDate=0;try{SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");DatestartDate=sdf.parse(strStart);DateendDate=sdf.parse(strEnd);maxDate=endDate.getTime();minDate=startDate.getTime();}catch(ParseExceptione){e.printStackTrace();}LinearLayoutdateTimeLayout=(LinearLayout)activity.getLayoutInflater().inflate(R.layout.common_datetime,null);datePicker=(DatePicker)dateTimeLayout.findViewById(R.id.datepicker);datePicker.setMaxDate(maxDate);datePicker.setMinDate(minDate);timePicker=(TimePicker)dateTimeLayout.findViewById(R.id.timepicker);timePicker.setVisibility(View.GONE);init(datePicker);ad=newAlertDialog.Builder(activity).setTitle(initDateTime).setView(dateTimeLayout).setPositiveButton("选择",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhichButton){inputDate.setText(dateTime);//inputDate.setText(getOneDay(dateTime));}}).setNegativeButton("取消",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhichButton){inputDate.setText("请选择");}}).show();onDateChanged(datePicker,0,0,0);returnad;}privateStringgetOneDay(Strings){try{Stringsss="2015-12-2517:23:00";SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Dateafter=sdf.parse(sss);longafterDate=after.getTime()-System.currentTimeMillis();returnafterDate+"";}catch(Exceptione){Log.e("e--",e.toString());}returns;}publicAlertDialogdateTimePicKDialog(finalTextViewinputDate){LinearLayoutdateTimeLayout=(LinearLayout)activity.getLayoutInflater().inflate(R.layout.common_datetime,null);datePicker=(DatePicker)dateTimeLayout.findViewById(R.id.datepicker);timePicker=(TimePicker)dateTimeLayout.findViewById(R.id.timepicker);timePicker.setVisibility(View.GONE);init(datePicker);ad=newAlertDialog.Builder(activity).setTitle(initDateTime).setView(dateTimeLayout).setPositiveButton("选择",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhichButton){inputDate.setText(dateTime);}}).setNegativeButton("取消",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhichButton){inputDate.setText("请选择");}}).show();onDateChanged(datePicker,0,0,0);returnad;}publicvoidonTimeChanged(TimePickerview,inthourOfDay,intminute){onDateChanged(null,0,0,0);}@OverridepublicvoidonDateChanged(DatePickerview,intyear,intmonthOfYear,intdayOfMonth){//获得日历实例Calendarcalendar=Calendar.getInstance();calendar.set(datePicker.getYear(),datePicker.getMonth(),datePicker.getDayOfMonth());SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");dateTime=sdf.format(calendar.getTime());ad.setTitle(dateTime);}/***实现将初始日期时间2012年07月02日拆分成年月日,并赋值给calendar**@paraminitDateTime初始日期时间值字符串型*@returnCalendar*/privateCalendargetCalendarByInintData(StringinitDateTime,intstate){Log.e("yearStr",initDateTime+state);Calendarcalendar=Calendar.getInstance();//将初始日期时间2012年07月02日16:45拆分成年月日时分秒Stringdate=spliteString(initDateTime,"","index","front");//日期Stringtime=spliteString(initDateTime,"","index","back");//时间StringyearStr=spliteString(date,"-","index","front");//年份StringmonthAndDay=spliteString(date,"-","index","back");//月日StringmonthStr=spliteString(monthAndDay,"-","index","front");//月StringdayStr=spliteString(monthAndDay,"-","index","back");//日Log.e("yearStr",yearStr+dayStr);intcurrentYear=Integer.valueOf(yearStr.trim()).intValue();intcurrentMonth=Integer.valueOf(monthStr.trim()).intValue()-1;intcurrentDay=Integer.valueOf(dayStr.trim()).intValue();calendar.set(currentYear,currentMonth,currentDay);returncalendar;}/***截取子串**@paramsrcStr源串*@parampattern匹配模式*@paramindexOrLast*@paramfrontOrBack*@return*/publicstaticStringspliteString(StringsrcStr,Stringpattern,StringindexOrLast,StringfrontOrBack){Stringresult="";intloc=-1;if(indexOrLast.equalsIgnoreCase("index")){loc=srcStr.indexOf(pattern);//取得字符串第一次出现的位置}else{loc=srcStr.lastIndexOf(pattern);//最后一个匹配串的位置}if(frontOrBack.equalsIgnoreCase("front")){if(loc!=-1)result=srcStr.substring(0,loc);//截取子串}else{if(loc!=-1)result=srcStr.substring(loc+1,srcStr.length());//截取子串}returnresult;}}

使用方法:

DateTimePickDialogUtildataTimeUtil=newDateTimePickDialogUtil(this,null);dataTimeUtil.dateTimePicKDialog(tvPsInfo,getStartDate(),useEndDate).show();


更多相关文章

  1. Android下获取开机时间
  2. android 同步框架分析
  3. 在Android上使用Http客户端的选择(译文)
  4. 解决导入Android例子时“Unable to resolve target 'android-x'
  5. android模拟器SD卡使用
  6. android 选择本地图片并截剪图片保存到,sdcard指定目录中
  7. windows8.1下android开发环境搭建(Eclipse+Android(安卓)sdk+ADT
  8. android背景选择器selector用法汇总
  9. Eclipse中导入Android工程

随机推荐

  1. Android Spinner设置默认值
  2. android浮动窗口
  3. 亲,画圆哦~~~
  4. Android中View绘制流程以及invalidate()
  5. android中实现从相册中一次性获取多张图
  6. Android 启动Launcher
  7. Android:宏控属性
  8. android隐藏全面屏虚拟键盘实现
  9. 实例:在Android调用WCF服务
  10. Android的Service Binder机制