倒计时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了倒计时相关的知识,希望对你有一定的参考价值。

获取当前时间用 new Date(),如果获取目标时间就是给括号里传规定格式的字符串比如:new Date("2017-03-27 14:59:59");

这里对格式有要求:
在IE6-8下“-”这个横岗不兼容,需要用"/"

getTime() 获取距离1970年1月1日午夜0点的毫秒差

所以求两个时间段的时间差就是 用getTime()方法 获取两个时间段的毫秒差 然后用多的减少的

代码:


<script type="text/javascript">
    /*
    * function:计时器函数
    * params:目标时间字符串
    * return:当前时间和目标时间所相差的时间字符串
    * */
    function getTimeFun(timePar){
        //获得目标时间的时间对象
        var dateTime = new Date(timePar);
        //获得当前时间的时间对象
        var dateNow = new Date();
        //分别获得距离1970年1月1日的毫秒数目
        dateNow = dateNow.getTime();
        dateTime = dateTime.getTime();
        //目标时间不能比当前时间小
        if(dateTime<dateNow){
            return "时光不能倒流!!!";
        }
        //求出当前时间和目标时间相差的毫秒
        var time = dateTime - dateNow;
        //获得相差的小时(未取整)
        var hourMs = time/(1000*60*60);
        //获得相差的小时(向下取整)
        var hour = Math.floor(hourMs);
        //获得相差的分钟(未取整)
        var minuteMs = (hourMs-hour)*60;
        //获得相差的分钟(向下取整)
        var minute = Math.floor(minuteMs);
        //获得相差的秒数(向下取整)
        var sec = Math.floor((minuteMs - minute)*60);
        //要返回的倒计时
        var timeStr = addZero(hour) +"小时"+addZero(minute)+"分钟"+addZero(sec)+"秒";
        //返回对象
        var resultList = {};
        //返回对象存入小时、分钟、秒、倒计时
        resultList.hour = addZero(hour);
        resultList.minute = addZero(minute);
        resultList.sec = addZero(sec);
        resultList.timeStr = timeStr;
        console.log(resultList)
        return resultList;
    }

    //如果数字小于10前面加0返回
    function addZero(timeObj){
        return timeObj<10?"0"+timeObj:timeObj;
    }

    //获取展示时间地点的div
    var timeDiv = document.getElementById("timeId");
    //每一秒执行一次自执行匿名函数,这里timeAuto只是个变量,不是函数
    var timeAuto = window.setInterval(function(){
        //调用计时器函数并传入一个目标时间,然后得到返回值,返回值中包括小时分钟秒还有输出用的时间字符串
        var res = getTimeFun("2017/03/27 20:00:00");
        //检验返回值
        if(res!="时光不能倒流!!!"){
            //把时间字符串给展示的div展示出来
            timeDiv.innerhtml = res.timeStr;
            //如果时间都为0的时候停止这个匿名函数
            if(res.hour == 0 && res.minute ==0 && res.sec==0){
                alert("结束");
                clearInterval(timeAuto);
            }
        }else{
            alert("时光不能倒流!!!");
            clearInterval(timeAuto);
        }

    },1000);

</script>

 

以上是关于倒计时的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用片段和计时器的选项卡式活动上更新 UI

如何实现React原生倒计时圈

自动刷新android片段,直到满足条件

如果用户没有使用浏览器,则jQuery计时器停止

颤振计时器仅更新秒小部件

#yyds干货盘点#愚公系列2023年02月 .NET/C#知识点-程序运行计时的总结