js實現倒數 —— ‘剩下多少天多少秒’


一、開始

  這個星期二去面試時遇到一道這樣的題目"請用js實現距離XX還剩……天……小時……秒",當時只是覺得創建一個數據保存下每個月有多少天,再去獲取天數相減就可以了。

  當時只是為了解決這個問題,並沒有細想,現在覺得這種方法過於繁瑣,而且還有閏年的問題。

  現在我重新寫一下這個方法,用時間戳來解決這個問題。

二、時間戳

  什么是時間戳呢?時間戳其實就是現在的時間距離格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒豪數。

  注意北京時間有八個小時的誤差,所以我們直接new Date(2018-01-01)其實是2018年1月1日的八點,所以我們要指定時間。

三、實現

  比如我們寫一個方法計算我們距2018年還有多少天:

function dateCount(){
        // 獲取現在的時間
        var date = new Date();
        // 2018的第一天
        var until = new Date('2018-01-01 00:00:00');
        // 計算時會發生隱式轉換,調用valueOf()方法,轉化成時間戳的形式
        var days = (until - date)/1000/3600/24; 
        // 下面都是簡單的數學計算 
        var day = Math.floor(days);
        var hours = (days - day)*24;
        var hour = Math.floor(hours);
        var minutes = (hours - hour)*60;
        var minute = Math.floor(minutes);
        var seconds = (minutes - minute)*60;
        var second = Math.floor(seconds);
        var back = '距離2018年還剩下'+day+'天'+hour+'小時'+minute+'分鍾'+second+'秒';
        return back;
    }

  然后再用setInterval()方法實現實時倒數

setInterval(function(){
        var text = dateCount();
        // show是一個節點
        show.innerText = text;
},1000)

  這樣就實現了倒數:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM