实现倒计时、计算通话结束时距离现在过了多久

简介: 实现倒计时、计算通话结束时距离现在过了多久

计算通话结束时距离现在过了多久

    String strTime = "";
        Date callDate = callRecord.getCallDate();//通话结束时时间
        long callTime = callDate.getTime();//返回通话结束时时间毫秒值
        long currentTimeMillis = System.currentTimeMillis();//当前时间毫秒值
        // 小于60分钟
        if ((currentTimeMillis - callTime) / 1000 / 60 < 60) {
          // 小于1分钟
            if (((currentTimeMillis - callTime) / 1000 / 60) == 0) {
                strTime = "刚刚";
            } else {
                strTime = ((currentTimeMillis - callTime) / 1000 / 60) + "分钟前";
            }
        } else if ((currentTimeMillis - callTime) / 1000 / 60 > 60 && ((currentTimeMillis - callTime) / 1000 / 60) < (24 * 60)) {
          // 大于60分钟且小于24小时
            strTime = ((currentTimeMillis - callTime) / 1000 / 60 / 60) + "小时前";
        } else if (((currentTimeMillis - callTime) / 1000 / 60) > (24 * 60) && ((currentTimeMillis - callTime) / 1000 / 60) < (24 * 60 * 7)) {
          // 大于24小时且小于7天
            strTime = ((currentTimeMillis - callTime) / 1000 / 60 / 60 / 24) + "天前";
        } else if (((currentTimeMillis - callTime) / 1000 / 60) >= (24 * 60 * 7)) {
          // 大于7天,显示具体时间日期
            strTime = new SimpleDateFormat("MM-dd HH:mm").format(callDate);
        }
        viewHolder.calls_list_callDate.setText(strTime);

倒计时

可显示天时分秒的倒计时

import android.os.CountDownTimer;

  /**
     * 
     * @param millisecond:毫秒值
     * @param timeText:显示倒计时的TextView控件
     */
  public static void remainingTime(int millisecond, TextView timeText) {
        CountDownTimer countDownTimer = new CountDownTimer(millisecond, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                ChatUtil.getIns().setPromotionSurplusMillisecond(millisUntilFinished);
                long day = millisUntilFinished / (1000 * 60 * 60 * 24);
                long hour = (millisUntilFinished - day * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
                long minute = (millisUntilFinished - day * (1000 * 60 * 60 * 24) - hour * (1000 * 60 * 60)) / (1000 * 60);
                long second = (millisUntilFinished - day * (1000 * 60 * 60 * 24) - hour * (1000 * 60 * 60) - minute * (1000 * 60)) / 1000;
                String hourStr = hour + "";
                String minuteStr = minute + "";
                String secondStr = second + "";
                if (hour / 10 < 1) {
                    hourStr = 0 + hourStr;
                }
                if (minute / 10 < 1) {
                    minuteStr = 0 + minuteStr;
                }
                if (second / 10 < 1) {
                    secondStr = 0 + secondStr;
                }
                if (timeText != null) {
                    timeText.setText(hourStr + ":" + minuteStr + ":" + secondStr);
                }
            }

            @Override
            public void onFinish() {
                // 倒计时为0时
                if (timeText!= null) {
                    timeText.setVisibility(View.GONE);
                }
            }
        };
        countDownTimer.start();
    }

只显示分秒的倒计时

  /**
     * @param millisecond:毫秒数
     */
  private void remainingTime(int millisecond) {
        CountDownTimer countDownTimer = new CountDownTimer(millisecond, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                long minute = millisUntilFinished / (1000 * 60);//分
                long second = (millisUntilFinished - minute * (1000 * 60)) / 1000;//秒
                String minuteStr = minute + "";
                String secondStr = second + "";
                if (minute / 10 < 1) {
                    minuteStr = 0 + minuteStr;
                }
                if (second / 10 < 1) {
                    secondStr = 0 + secondStr;
                }
                await_receive_time.setText(minuteStr + ":" + secondStr);
            }

            @Override
            public void onFinish() {
                // 倒计时为0时进入这个方法
                effect_get_button.setEnabled(true);
                effect_red_dot.setVisibility(View.VISIBLE);
                await_receive_time_img.setVisibility(View.GONE);
                await_receive_time.setVisibility(View.GONE);
            }
        };
        countDownTimer.start();
    }
目录
相关文章
|
C语言
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
1131 0
MQTT交叉编译(海思v300 arm-hisiv300-linux-):openssl、paho.mqtt.c、paho.mqtt.cpp
|
算法 C++ 容器
86 C++ - 算法头文件
86 C++ - 算法头文件
101 0
|
12月前
|
存储 NoSQL JavaScript
融合众店与排队免单模式:快速裂变,解决用户留存,提高客户黏性
上海“我店”的绿色积分与排队免单模式的技术实现涉及后端(如Node.js、Express.js、MongoDB、Redis)、前端(如React、Redux、Axios)开发及数据库设计。核心功能涵盖用户管理、订单处理、积分增值、排队免单逻辑及商家管理,需注重安全性、测试与部署,确保系统高效稳定运行。
|
12月前
|
安全 Oracle Java
burpsuite基本使用
burpsuite基本使用
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之如何提升sql任务并行度
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
230 1
|
人工智能 IDE Linux
编程ai工具Copilot
介绍GitHub 的 Copilot 和 Alibaba Cloud AI Coding Assistant (Cosy) 是两个代码辅助工具。
376 2
|
存储 Linux Shell
因误删文件导致CentOS7开机卡死无法进入图形登录界面
因误删文件导致CentOS7开机卡死无法进入图形登录界面
1099 0
因误删文件导致CentOS7开机卡死无法进入图形登录界面
|
对象存储
阿里云oss-cloud-sdk-springboot3兼容问题
阿里云oss-cloud-sdk-springboot3兼容问题
394 0
|
Linux
Linux日志自动清理方案
Linux日志自动清理方案
406 0
|
数据库连接 应用服务中间件 数据库
Seata常见问题之访问seata 7091端口提示报错如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
1251 0