1. 程式人生 > >js倒計時程式碼編寫

js倒計時程式碼編寫

前幾天寫了個倒計時的需求,時間這玩意好久沒寫過,突然碰到差點懵逼。現在寫出來分享一下。

倒計時一般顯示就是時分秒,一個當前時間,一個截止時間,從中計算獲取資料。

new Date()函式是js語言自帶的系統函式。加上getTime()可以獲得傳入時間或者當前時間的毫秒數。引數有以下5種形式。

new Date("month dd,yyyy hh:mm:ss"); 
new Date("month dd,yyyy");
new Date(yyyy,mth,dd,hh,mm,ss);
new Date(yyyy,mth,dd);
new Date(ms);

需要注意最後一種形式,引數表示的是需要建立的時間和GMT時間1970年1月1日之間相差的毫秒數。

以上的引數要這樣傳:

·month:用英文表示的月份名稱,從January~December。

·mth:用整數表示的月份,從0(1月)~11(12月)。

·dd:表示一個月中的第幾天,從1~31。

·yyyy:四位數表示的年份。

·hh:小時數,從0(午夜)~23(晚11點)。

·mm:分鐘數,從0~59的整數。

ss:秒數,從0~59的整數。

ms:毫秒數,為大於等於0的整數。

下面是舉的幾個例子:

new Date("May 12,2007 17:18:32");
new Date("May 12,2007");
new Date(2007,4,12,17,18,32);
new Date(2007,4,12);
new Date(1178899200000);

在設計倒計時需求的時候我的想法就是算出兩個時間的差然後從中求得時分秒,甚至和日。下面貼出我的程式碼片段。

var countDown = function () {
        var endTime = new Date('2018/7/25 17:30:00');
        var nowTime = new Date();
        var t = endTime.getTime() - nowTime.getTime();
        console.log(t);
        var d = '';
        var h = '';
        var m = '';
        var s = '';
        if (t > 0) {
            d = Math.floor(t / 1000 / 60 / 60 / 24);
            h = Math.floor(t / 1000 / 60 / 60 % 24);
            m = Math.floor(t / 1000 / 60 % 60);
            s = Math.floor(t / 1000 % 60);
        }

        function toDouble(n) {
            return n < 10 ? '0' + n : n;
        }

        // return d+'天'+toDouble(h)+'時'+toDouble(m)+'分'+toDouble(s)+'秒';
        console.log(d + '天' + toDouble(h) + '時' + toDouble(m) + '分' + toDouble(s) + '秒')
    }
    setInterval(countDown, 100);

這個函式裡面dhms分別代表了天時分秒,用時間差算出。最後得出相應的資料return出來,這裡我直接console的,方便除錯,使用時請注意。每0.1s呼叫一次函式達到重新整理資料的目的。如果想知道更多獲得時間的函式可以點選以下網址