zoukankan      html  css  js  c++  java
  • 倒计时通用方法

    直接上两个函数

    /**
     * 时间倒计时
     * 将倒计时字符串传递给回调函数
     * @author LiuChuanWei
     * @time 2018-08-15
     * @param 
     *         endTime 截止时间,单位毫秒
     *        format 字符串格式化,比如 d天h小时m分钟s秒
     *        callback 回调函数,format格式化后的字符作为参数传递给该回调函数
     */
    function countdown(endTime, format, callback) {
        var nowTime = new Date().getTime();    
        var total_micro_second = endTime - nowTime || 0;   //单位毫秒
        if (total_micro_second < 0) {
            total_micro_second = 0;     // 时间初始化小于0,活动已结束状态
        }
    
        var clockStr = "已经截止";
        if (total_micro_second > 0) {
            clockStr = dateformat(total_micro_second, format)   // 格式化倒计时时钟字符串
            callback(clockStr);    // 回调自定义函数
            setTimeout(function () {
                total_micro_second -= 1000;
                countdown(endTime, format, callback);
            }, 1000)
        }
    }
    
    /**
     * 日期倒计时格式化
     * @author LiuChuanWei
     * @time 2018-08-15 
     * @param micro_second 单位毫秒, format 格式化字符串
     * @return 字符串
     *
     */
    function dateformat(micro_second, format) {
        // 总秒数
        var second = Math.floor(micro_second / 1000);
    
        if (new RegExp("(d+)").test(format)) {
            // 天数
            var day = Math.floor(second / 3600 / 24);
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? day : ("00" + day).substr(("" + day).length));
            second = second % (3600 * 24);
        }
    
        if (new RegExp("(h+)").test(format)) {
            // 小时
            var hr = Math.floor(second / 3600);
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? hr : ("00" + hr).substr(("" + hr).length));
            second = second % 3600;
        }
    
        if (new RegExp("(m+)").test(format)) {
            // 分钟
            var min = Math.floor(second / 60);
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? min : ("00" + min).substr(("" + min).length));
            second = second % 60;
        }
    
        if (new RegExp("(s+)").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? second : ("00" + second).substr(("" + second).length));
        }
        return format;
    }
    View Code

    那么,如何使用该倒计时函数呢?如下

    (在微信小程序中使用)

    // (单个)倒计时
    countdown(endTime, 'd天h小时m分钟s秒', function(clockStr){
        that.setData({
            clock: clockStr
        });
    });

    (批量倒计时)

    // (批量)遍历倒计时
    var endTimeList = endTimeList || [];
    var endTimeStrArr = that.data.endTimeStrArr || [];
    for (var i = 0; i < endTimeList.length; i++) {
        var endTimeStr = endTimeStrArr[i];    // 在回调函数中不能使用变量i,故将变量声明在外面
        countdown(endTimeList[i].getTime(), 'hh:mm:ss', function(clockStr){
            endTimeStr = clockStr;
            that.setData({
                endTimeStrArr: endTimeStrArr
            })
        })
    }
  • 相关阅读:
    Python:循环语句
    Python:list用法
    ettercap局域网DNS欺骗实现过程
    Linux关于用户信息的一些命令
    业务逻辑漏洞
    Linux安装Sqlmap等工具
    CVE-2015-1635(MS15-034 )进行DOS攻击
    HTTP.SYS远程代码执行漏洞测试(ms15-034)
    爬虫学习笔记
    MSF利用ms17-010漏洞过程记录
  • 原文地址:https://www.cnblogs.com/lhat/p/9480502.html
Copyright © 2011-2022 走看看