计算时间差

来源:互联网 发布:淘宝店铺装修模板 编辑:程序博客网 时间:2024/05/19 09:39
 public static int getDateCount(String start,String end) {        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        try {            Date d1 = df.parse(start);            Date d2 = df.parse(end);            //Date   d2 = new   Date(System.currentTimeMillis());//你也可以获取当前时间            long diff = d1.getTime() - d2.getTime();//这样得到的差值是微秒级别        } catch (ParseException e) {        }        return getDateCount(start,end);    }    //这里做东西要用到天数    //return (int) (diff / (1000 * 60 * 60 * 24));    //这一句就是将毫秒转化为天数    //也可以获得年数,月数etc.
Toast.makeText(this, "相差时间为:" + getDateCount("2106-05-27 12:00:00","2006-05-26 12:00:00")+"天",Toast.LENGTH_SHORT).show();

这里写图片描述

http://blog.csdn.net/u014388299/article/details/52389698

2017/7/14更新

设置时间选择器

  • 获取系统时间
//获取系统时间并设置为时间选择器当前时间        final Calendar ca = Calendar.getInstance();        mYear = ca.get(Calendar.YEAR);        mMonth = ca.get(Calendar.MONTH);        mDay = ca.get(Calendar.DAY_OF_MONTH);
  • 将系统时间赋给时间选择器
private DatePickerDialog.OnDateSetListener mdateListener = new DatePickerDialog.OnDateSetListener() {        @Override        public void onDateSet(DatePicker view, int year, int monthOfYear,                              int dayOfMonth) {            mYear = year;            mMonth = monthOfYear;            mDay = dayOfMonth;            display();        }    };
  • 点击显示时间的Textview的响应事件(弹出时间选择器并选择时间然后setText进TextView)
dateDisplay = (TextView) findViewById(R.id.textViewdate);dateDisplay.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                showDialog(DATE_DIALOG);            }        });@Override    protected Dialog onCreateDialog(int id) {        switch (id) {            case DATE_DIALOG:                return new DatePickerDialog(this, mdateListener, mYear, mMonth, mDay);        }        return null;    }private DatePickerDialog.OnDateSetListener mdateListener = new DatePickerDialog.OnDateSetListener() {        @Override        public void onDateSet(DatePicker view, int year, int monthOfYear,                              int dayOfMonth) {            mYear = year;            mMonth = monthOfYear;            mDay = dayOfMonth;            display();        }    };/**     * 设置日期 利用StringBuffer追加     */public void display() {     dateDisplay.setText(new StringBuffer().append(mYear).append("-").append(mMonth + 1).append("-").append(mDay).append(" "));    }
  • 这是设置系统时间进时间选择器的样式(API25)
    点开就是当前日期
  • 不设置系统时间就会这样
    这里写图片描述

    获取当前时间就简单得多

  • 上网查了一下,获取当前时间有两种主要的方法

  • 第一种:获取距离1970-1-1日的 毫秒数,不过这个似乎还要具体到秒,软件中只需要计算天数,所以没考虑
  • 第二种:分别获取当前系统时间的年月日,然后将它转化为String类型再拼成一个字符串来显示时间以及计算时差
//获取系统时间        final Calendar ca1 = Calendar.getInstance();        nYear=ca1.get(Calendar.YEAR);        nMonth = ca1.get(Calendar.MONTH);        nDay = ca1.get(Calendar.DAY_OF_MONTH);//获取系统时间并组成字符串        Snyear = String.valueOf(nYear);        SnMonth = String.valueOf(nMonth+1);        Sndays = String.valueOf(nDay);        if(nMonth>=0 && nMonth <=8)        {             j =Snyear+"0"+SnMonth+Sndays;        }        else        {             j =Snyear+SnMonth+Sndays;        }//Calendar获取的月份要+1//如果月份是1-9之间的,那么就要在月份前面加一个0,便于之后计算时差
  • 计算时差的code,因为天数只可能是整数,所以要将double转为int再转String去小数点
private  String getDateCount(String beginTime,String endTime) {        String str1 = endTime;  //"yyyyMMdd"格式 如 20131022        String str2 = beginTime;  //"yyyyMMdd"格式 如 20131022        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");//输入日期的格式        Date date1 = null;        try {            date1 = simpleDateFormat.parse(str1);        } catch (ParseException e) {            e.printStackTrace();        }        Date date2 = null;        try {            date2 = simpleDateFormat.parse(str2);        } catch (ParseException e) {            e.printStackTrace();        }        GregorianCalendar cal1 = new GregorianCalendar();        GregorianCalendar cal2 = new GregorianCalendar();        cal1.setTime(date1);        cal2.setTime(date2);        double dayCount = (cal2.getTimeInMillis()-cal1.getTimeInMillis())/(1000*3600*24);//从间隔毫秒变成间隔天数        int mid = (int) dayCount;//double转int再转String去掉小数点        String days = String.valueOf(mid);        return days;    }
  • 计算选定的日期与当前日期的天数差
    这里写图片描述

吐槽一下,还是安卓新版时间选择器好看,以前的那个滚轮的太丑了

IOS选择器:http://blog.csdn.net/AndroidMsky/article/details/53302959

原创粉丝点击