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 时间显示控件 TextClock
  4. Android时间选择器以及回调的使用
  5. android 取现在时间和以前的时间做差 求出天数 时间 和分钟数
  6. Android开发中 获取当前Android的年月日时分秒的时间
  7. 设置系统超时时间
  8. 转载 Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息

随机推荐

  1. android开发视频资源 电驴10G下载
  2. Android自适应屏幕大小和layout布局
  3. Android(安卓)ListView元素间隙线自定义
  4. Android读写XML(下)――创建XML文档
  5. 菜单 Android(安卓)Menu
  6. Simple Guide for Porting Android(安卓)
  7. android命令行下创建虚拟设备avd
  8. Android(安卓)ThreadLocal及InheritableT
  9. Android(安卓)资源简介(四) ClipDrawable
  10. Android获取webView快照与屏幕截屏的方法