Android&Java计算时间间隔

 
       前段时间做东西的时候发现网上公开的计算时间间隔的源码不能适应我的需求,所以自己摸索了一会,根据我的需求写了一个方法。总算是可以解决我的问题了。

##先读数轴##

    基本原理是计算利用unix时间戳,计算出间隔时间(between)再分别计算天时分秒。
    之所以说网上的源码不适应我的需求,主要是因为他们生成的start的时间戳精度不同。
    这里用DateFormat类里的parse()方法生成时间戳。
数轴

既然有人发明了轮子,那么就没必要重复发明轮子

public static String getTime(String time){
   try{
       DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       Date date = dateFormat.parse(time);
       BigDecimal bb = new BigDecimal(String.valueOf(new Date().getTime())).subtract(new BigDecimal(date.getTime()));
       long b = bb.longValue();
       long d = b/86400000;
       long h = (b-d*86400000)/1000/60/60;
       long m = (b-d*86400000-h*3600000)/1000/60;
       long s = (b-d*86400000-h*3600000-m*60000)/1000;
      // long mm = b-d*86400000-h*3600000-m*60000-s*1000;
       return d +"天" + h +"时" + m +"分"+ s +"秒";
   }catch(ParseException e){
       e.printStackTrace();
   }
   return null;
}

    方法返回d天h时m分s秒,需要进一步细分的毫秒注释在变量mm中。方法形参String型time(即start)
    time格式为yyyy-MM-dd HH:mm:ss

例:2020-06-09 22:00:00

需要注意日期和时间之间的空格
time的格式可以根据SimpleDateFormat允许的情况自定义

根据需求使用返回值

Android应用实例:set到textview上
    需要注意的是通过线程动态设置textview的text,要将线程runOnUiThread。

new Timer().schedule(new TimerTask() {
                @Override
                public void run() {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if(PublicCache.startTime!=null){
                                tvTime.setText(TimeUtils.getTime(PublicCache.startTime));
                            }
                        }
                    });
                }
            },0,1);

效果如图
效果
因为时间一直在变,截图又只能是静态的,效果如图。(主要是不会弄动态图)
我这里的起始时间(start)是2020-06-09 22:00:00
距离现在(now)的2020-11-4 22:36:00左右

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值