js计时器(IE,Firefox兼容)

<html>
 <head>
  <title>js 计时器</title>
  <style type="text/css">
  .time{
   font-size:16px;
  }
  </style>
 </head>
 <body>
  <div id="timmer" class="time"></div>
  <script>
   /**
    * Desc : 显示倒计时
    * @params : format - 日期格式, 如,'year=flase,day=true,minite=true,second=true,i18n=zh-cn'
    */
   var yearNum = 0, monthNum = 0, dayNum = 0, hourNum = 0, miniteNum = 0, secondNum = 0;
   function displayTime(format, timesTip, i) {
    //显示字符串
    var displayStr = timesTip[i];
    
    //解析日期格式参数
    var params = format.split(",");
    //param-参数名,value-参数值
    var param = "",value="";
    var year = true, month = true, day = true, hour = true, minite = true, second = true;
    var yearTxt = "年", monthTxt = "月", dayTxt = "日", hourTxt = "时", miniteTxt = "分", secondTxt = "秒";
    for(var i=0; i<params.length; i++) {
     var keys = params[i].split("=");
     param = keys[0];
     value = keys[1];
     if(param == "year" && value == "false") {
      year = false;
     }
     if(param == "month" && value == "false") {
      month = false;
     }
     if(param == "day" && value == "false") {
      day = false;
     }
     if(param == "hour" && value == "false") {
      hour = false;
     }
     if(minite == "minite" && value == "false") {
      year = false;
     }
     if(param == "second" && value == "false") {
      second = false;
     }
    }
    if(year == true) {
     displayStr = displayStr + yearNum.toString() + yearTxt;
    }    
    if(month = true) {
     displayStr = displayStr + monthNum.toString() + monthTxt;
    }
    if(day == true) {
     displayStr = displayStr + dayNum.toString() + dayTxt;
    }
    if(hour == true) {
     displayStr = displayStr + hourNum.toString() + hourTxt;
    }
    if(minite == true) {
     displayStr = displayStr + miniteNum.toString() + miniteTxt;
    }
    if(second == true) {
     displayStr = displayStr + secondNum.toString() + secondTxt;
    }
    displayStr = displayStr;
    document.getElementById("timmer").innerHTML = displayStr;
   }
   /**
    * Desc : 计时器核心
    * @params: times - 时间节点数组
    *   timesTip - 时间段显示标题
    *    format - 时间显示格式化
    */
   function timerCore(times, timesTip, format) {
    var sysTime = getSysTime();
    for(var i=0; i<times.length; i++) {
     if(parseInt(times[i],10) > parseInt(sysTime,10)) {
      calculate(sysTime, times[i], times, timesTip, format, i);
      break;
     }
    }
   }
   //计算时间
   function calculate(sysTime, flagTime, times, timesTip, format, i){
    var poor = poorBewteenTowDate(sysTime, flagTime);
    var p = poor;
    yearNum = Math.floor(poor / 3600 / 24 / 365);
    poor = poor - yearNum * 3600 * 24 * 365;
    monthNum = Math.floor(poor / 3600 / 24 / 30);
    poor = poor - monthNum * 3600 * 24 * 30;
    dayNum = Math.floor(poor/3600/24);
    poor = poor - dayNum * 3600 * 24;
    hourNum = Math.floor(poor / 3600);
    poor = poor - hourNum * 3600;
    miniteNum = Math.floor(poor / 60);
    poor = poor - miniteNum * 60;
    secondNum = Math.floor(poor);
      
    displayTime(format, timesTip, i);
    if(p != 0){
     sysTime = getSysTime();
     setTimeout(function(){calculate(sysTime, flagTime, times, timesTip, format, i);},1000); 
    } else {
     timerCore(times,timesTip, format, i);
    }
   }
   //计算两个日期的时间差
   function poorBewteenTowDate(startTime, endTime){
     var st = new Date(parseInt(startTime.substring(0,4),10),parseInt(startTime.substring(4,6),10),parseInt(startTime.substring(6,8),10),
       parseInt(startTime.substring(8,10),10),parseInt(startTime.substring(10,12),10),parseInt(startTime.substring(12,14),10))
    var et = new Date(parseInt(endTime.substring(0,4),10),parseInt(endTime.substring(4,6),10),parseInt(endTime.substring(6,8),10),
       parseInt(endTime.substring(8,10),10),parseInt(endTime.substring(10,12),10),parseInt(endTime.substring(12,14),10));
    var poor = 0;
    if(et.getTime() > st.getTime()){
     poor = (et.getTime() - st.getTime())/1000;
    }
    return poor;
   }
   //获得系统时间
   function getSysTime() {
    var datetime = new Date();
    var year = datetime.getFullYear();
    var month = datetime.getMonth() + 1;
    var day = datetime.getDate();
    var hour = datetime.getHours();
    var minite = datetime.getMinutes();
    var second = datetime.getSeconds();
    var sum = second + minite*100 + hour*10000 + day*1000000 + month*100000000 + year*10000000000;
    return sum.toString();
   }
   
   /** 计时器应用 */
   var times = new Array(2);
   times[0] = "20100704135600";
   times[1] = "20100704135630";
   var timesTip = new Array(2);
   timesTip[0] = "离拍卖开始时间还有:";
   timesTip[1] = "离拍卖结束时间还有:";
   var format = "year=true,day=true,minite=true,second=true,i18n=zh-cn";
   timerCore(times, timesTip, format);
  </script>
 </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值