一、開始
這個星期二去面試時遇到一道這樣的題目"請用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)
這樣就實現了倒數:
