/** * 时间日期设置窗口 * @author chen.lin * */public class DateDialogUtil implements OnDateChangedListener, OnTimeChangedListener {    private DatePicker datePicker;    private TimePicker timePicker;    private AlertDialog ad;    private String dateTime;    private String initDateTime;    private Activity activity;    /** * 日期时间弹出选择框构造函数 * * @param activity * :调用的父activity * @param initDateTime * 初始日期时间值,作为弹出窗口的标题和日期时间初始值 */    public DateDialogUtil(Activity activity, String initDateTime) {        this.activity = activity;        //this.initDateTime = initDateTime;    }    public void init(DatePicker datePicker, TimePicker timePicker) {        Calendar calendar = Calendar.getInstance();        if (!(null == initDateTime || "".equals(initDateTime))) {            calendar = this.getCalendarByInintData(initDateTime);        } else {            initDateTime = calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH) + "- " + calendar.get(Calendar.HOUR_OF_DAY)                    + ":" + calendar.get(Calendar.MINUTE) + ":" + calendar.get(Calendar.SECOND);        }        datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), this);        //timePicker.setIs24HourView(true);        timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));        timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));    }    /** * 弹出日期时间选择框方法 * * @param inputDate * :为需要设置的日期时间文本编辑框 * @return */    public AlertDialog dateTimePicKDialog(final EditText inputDate) {        LinearLayout dateTimeLayout = (LinearLayout) activity.getLayoutInflater().inflate(R.layout.common_datetime, null);        datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);        timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.timepicker);        init(datePicker, timePicker);        timePicker.setIs24HourView(true);        timePicker.setOnTimeChangedListener(this);        ad = new AlertDialog.Builder(activity).setTitle(initDateTime).setView(dateTimeLayout).setPositiveButton("设置", new DialogInterface.OnClickListener() {            public void onClick(DialogInterface dialog, int whichButton) {                inputDate.setText(dateTime);                dialog.dismiss();            }        }).setNegativeButton("取消", new DialogInterface.OnClickListener() {            public void onClick(DialogInterface dialog, int whichButton) {                //inputDate.setText("");                dialog.dismiss();            }        }).show();        onDateChanged(null, 0, 0, 0);        return ad;    }    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {        onDateChanged(null, 0, 0, 0);    }    @SuppressLint("SimpleDateFormat")    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {        // 获得日历实例        Calendar calendar = Calendar.getInstance();        calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), timePicker.getCurrentHour(), timePicker.getCurrentMinute());        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        dateTime = sdf.format(calendar.getTime());        ad.setTitle(dateTime);    }    /** * 实现将初始日期时间2012-07-02 16:45 拆分成年 月 日 时 分 秒,并赋值给calendar * * @param initDateTime * 初始日期时间值 字符串型 * @return Calendar */    private Calendar getCalendarByInintData(String initDateTime) {        Calendar calendar = Calendar.getInstance();        // 将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒        String date = spliteString(initDateTime, " ", "index", "front"); // 日期        String time = spliteString(initDateTime, " ", "index", "back"); // 时间        String yearStr = spliteString(date, "-", "index", "front"); // 年份        String monthAndDay = spliteString(date, "-", "index", "back"); // 月日        String monthStr = spliteString(monthAndDay, "-", "index", "front"); // 月        String dayStr = spliteString(monthAndDay, "-", "index", "back"); // 日        String hourStr = spliteString(time, ":", "index", "front"); // 时        String minuteStr = spliteString(time, ":", "index", "back"); // 分        int currentYear = Integer.valueOf(yearStr.trim()).intValue();        int currentMonth = Integer.valueOf(monthStr.trim()).intValue() - 1;        int currentDay = Integer.valueOf(dayStr.trim()).intValue();        int currentHour = Integer.valueOf(hourStr.trim()).intValue();        int currentMinute = Integer.valueOf(minuteStr.trim()).intValue();        calendar.set(currentYear, currentMonth, currentDay, currentHour, currentMinute);        return calendar;    }    /** * 截取子串 * * @param srcStr * 源串 * @param pattern * 匹配模式 * @param indexOrLast * @param frontOrBack * @return */    public static String spliteString(String srcStr, String pattern, String indexOrLast, String frontOrBack) {        String result = "";        int loc = -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()); // 截取子串        }        return result;    }}

相关common_datetime.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >    <DatePicker  android:id="@+id/datepicker" android:layout_width="wrap_content" android:layout_height="wrap_content" />    <TimePicker  android:id="@+id/timepicker" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>

使用方法

public class ServiceAddActivity extends CommonActivity implements OnClickListener {// 保存日期与时间private ImageButton button_showdate,private EditText serviceDateEdit;// 初始化当前时间private String initCurrentDateTime = (new Date()).toString();@Overrideprotected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_service_add);        // 显示日期按钮        button_showdate = (ImageButton) findViewById(R.id.button_showdate);        serviceDateEdit = (EditText)findVewiById(R.id.et_date);        }/** 设置时间 */    private void setDateAndTime() {        DateDialogUtil dateTimePicKDialog = new DateDialogUtil(ServiceAddActivity.this, initCurrentDateTime);        dateTimePicKDialog.dateTimePicKDialog(serviceDateEdit);    }@Overridepublic void onClick(View v) {            switch (v.getId()) {            case R.id.button_showdate:                // 设置时间                setDateAndTime();                break;    }}

更多相关文章

  1. 屏蔽电信流氓广告造成的诡异的问题--Android WebView 长时间不能
  2. Android——类型转换 时间处理
  3. android 实现日期选择器
  4. android string.xml中格式资源字符串
  5. Android获取通话记录【名称,号码,日期,通话时间,类型】
  6. android 中使用TextView实现分段显示不同颜色的字符串
  7. DatePicker 日期选择控件 DatePickerDialog 日期选择对话框
  8. android 日期对话框
  9. android获得系统时间(Handler)

随机推荐

  1. EGG NETWORK阿凡提公链 全新一代算法稳定
  2. 《程序人生》2020无畏年少青春,迎风潇洒前
  3. 第四章 MPS来源需求 第3节 MPS来源需求
  4. 电脑用户需要了解的Win7与Win10系统知识
  5. 外企抵制新疆棉 我国纺织企业如何寻求化
  6. clickhouse安装配置
  7. Centos7配置DR模式的LVS
  8. Mysql主从复制
  9. 《吊打面试官》系列-ConcurrentHashMap &
  10. 神经元是如何组成神经网?