1. 程式人生 > >js 實現倒計時,以及new Date().getTime()的格式化應用相容性說明

js 實現倒計時,以及new Date().getTime()的格式化應用相容性說明

最終效果:用%(mod)等方法計算得出9月10號距離國慶開業的倒計時

D:\0910張亮\PC切圖\PC切圖

html:核心程式碼

<div class="countdown-block">
  <!-- 數字的背景 -->
  <img class="countdown-block-bg" src="../img/activity/countDown/displayBlock.png" height="84" width="305"/>
  <!-- 倒計時數字,相對於 “countdown-block”絕對定位 left:0,top:0 看情況調整 -->
  <div class="countdown-number">
    <ul class="activity-day"><li id="day1">0</li><li id="day2">0</li></ul>
    <ul class="activity-hour"><li id="hour1">0</li><li id="hour2">0</li></ul>
    <ul class="activity-minute"><li id="minute1">0</li><li id="minute2">0</li></ul>
    <ul class="activity-second"><li id="second1">0</li><li id="second2">0</li></ul>
  </div>
  <!-- 距離開業的圖片,相對於 “countdown-block”絕對定位 -->
  <div class="countdown-title">
    <img id="img_countdown_title" src="../img/activity/countDown/opening.png" height="40" width="372"/>
  </div>
</div>

js:

// 以下幾種方法都能格式化一個日期,getTime()是獲取一個當前設定日期到1970年1月1日的毫秒
var activityEnd_seconds = new Date(2018,10,7,23,59,59).getTime(); // 相容IE8 IE8+ chrome firefox
var activityEnd_seconds = new Date("2018/10/07 23:59:59").getTime(); // 相容IE8 IE8+ chrome firefox
var activityOpening_seconds = new Date("09 28, 2018 23:59:59").getTime(); // 不相容IE、Edge ,相容 chrome firefox
var now_seconds = new Date().getTime(); // log(11111,"=======",new Date(1538927999000)) var acDay = ""; var acHour = ""; var acMinu = ""; var acSeconds = ""; var diff_seconds; if (new Date().getTime() < activityOpening_seconds) { diff_seconds = Math.floor((activityOpening_seconds - now_seconds) / 1000); // 秒 } else { diff_seconds = Math.floor((activityEnd_seconds - now_seconds) / 1000); // 秒 $("#img_countdown_title").attr("src", "../img/activity/countDown/activityEnd.png") } // var diff_seconds = 3600 * 49 + 180; // 秒 // log("now_seconds ===",now_seconds,"s"); var t1; var $day1 = $("#day1"); var $day2 = $("#day2"); var $hour1 = $("#hour1"); var $hour2 = $("#hour2"); var $minute1 = $("#minute1"); var $minute2 = $("#minute2"); var $second1 = $("#second1"); var $second2 = $("#second2"); function activityContdown(second) { acDay = judgeNumber(Math.floor(second / (3600 * 24))); acHour = judgeNumber(Math.floor(second % (3600 * 24) / (3600))); // 模掉天數後,剩下的是不足一天的數量,再除以小時(3600s)就得到了最大小時數
acMinu = judgeNumber(Math.floor(second % (3600 * 24) % 3600 / 60)); // 模掉天數,再模掉小時後,剩下的就是分鐘數了,直接除以分(60s)即可 acSeconds = judgeNumber(Math.floor(second % 60)); // 最簡單就是這個秒了,任何數取模60(1分鐘),得到的都是分鐘外的秒數 $day1.text(acDay.substring(0, 1)); $day2.text(acDay.substring(1)); $hour1.text(acHour.substring(0, 1)); $hour2.text(acHour.substring(1)); $minute1.text(acMinu.substring(0, 1)); $minute2.text(acMinu.substring(1)); $second1.text(acSeconds.substring(0, 1)); $second2.text(acSeconds.substring(1)); if (second > 0) { t1 = setTimeout(function () { activityContdown(second) }, 1000) } else { clearTimeout(t1); return false; } second--; } function judgeNumber(num) { // 判斷數字的位數 var newNum = ""; if (/.{2}/g.test(num)) { newNum = num; } else { newNum = "0" + num; } return newNum.toString(); } activityContdown(diff_seconds);

Note:

1.格式化的日期的相容性

2.取得到1970,1,1日的毫秒數,先轉換為秒,再去計算天,時,分,秒