计算时间差

 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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值