欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算时间差

程序员文章站 2022-06-21 17:44:55
...
 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