Android 日期时间选择控件
16lz
2021-01-23
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();
更多相关文章
- Android下获取开机时间
- android工程字符串多语言翻译遗漏查找工具
- Android 时间显示控件 TextClock
- Android时间选择器以及回调的使用
- android 取现在时间和以前的时间做差 求出天数 时间 和分钟数
- Android开发中 获取当前Android的年月日时分秒的时间
- 设置系统超时时间
- 转载 Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息