2012-06-27 141 views
2

我看了一個統計頁面在這裏:http://movies.io/i/stats數到今天

而且我注意到一個很酷的東西漂亮那裏有是,數了多久,因爲該網站誕生了今天的計數器。它顯示爲:It was born 1 month, 8 days, 2 hours, and 36 minutes ago.我試圖在頁面上找到沒有運氣的代碼。

問題是,當搜索如何的時候,我只發現在幾天內計數。還有一個問題是刷新它,而不刷新頁面。這似乎是一些嚴肅的編碼。

如何在顯示的頁面上製作計數器?我不想使用jQuery。

對不起,如果這聽起來像一個問題,說:嘿......只是做我的工作,而我放鬆。但問題是,我是新的,我無法找到我想要的東西的解決方案。

+0

在movies.io的情況下,他們正在使用Ajax調用更新計數器。 – Jon

+0

可能重複的[如何計算日期差異在JavaScript](http://stackoverflow.com/questions/7763327/how-to-calculate-date-difference-in-javascript) –

+0

你推薦什麼答案?有點難以引起不是很多的投票和不被接受的答案。 – user1431627

回答

3

以無聊的名義...這個頁面應該更新javascript沒有jquery的時間跨度。

<!doctype html> 
<html> 
<body onload="init()"> 
    <script type="text/javascript"> 
     function init() { 
      updateTimespan(); 
      setInterval(updateTimespan, 3000); 
     } 

     function updateTimespan() { 
      var birth = new Date(1987, 3, 20); // april 20th 
      var now = new Date(); 
      var timespan = getTimespan(birth, now); 

      var content = '' + timespan.years + ' years, ' + 
       timespan.months + ' months, ' + 
       timespan.days + ' days, ' + 
       timespan.hours + ' hours, ' + 
       timespan.minutes + ' minutes, ' + 
       timespan.seconds + ' seconds.'; 

      var p = document.getElementById('pTimespan'); 
      p.innerHTML = content; 
     } 

    function getTimespan(start, end) { 
     var seconds = end.getSeconds() - start.getSeconds(); 
     var minutes = end.getMinutes() - start.getMinutes(); 
     var hours = end.getHours() - start.getHours(); 
     var days = end.getDate() - start.getDate(); 
     var months = end.getMonth() - start.getMonth(); 
     var years = end.getFullYear() - start.getFullYear(); 

     if (seconds < 0) { 
      minutes -= 1; 
      seconds += 60; 
     } 

     if (minutes < 0) { 
      hours -= 1; 
      minutes += 60; 
     } 

     if (hours < 0) { 
      days -= 1; 
      hours += 24; 
     } 

     if (days < 0) { 
      months -= 1; 
      var lastMonthNumber = end.getMonth() - 1; 
      if (lastMonthNumber < 0) { lastMonthNumber += 12; } // will never be Feb. 
      var daysInLastMonth = new Date(end.getFullYear(), lastMonthNumber, 0).getDate(); 
      days += daysInLastMonth; 
     } 

     if (months < 0) { 
      years -= 1; 
      months += 12; 
     } 

     return { 
      years: years, 
      months: months, 
      days: days, 
      hours: hours, 
      minutes: minutes, 
      seconds: seconds 
     }; 
    } 
    </script> 
    <p> 
     Time since my birth</p> 
    <p id="pTimespan"> 
     Will be updated</p> 
</body> 
</html> 
+0

完美的作品!感謝您花時間爲我編碼! – user1431627

0

一個解決方案是獲取您的網站創建(或近似)的時代。然後從中減去當前時間。然後使用該毫秒數轉換爲年,月,日等。這可以通過JavaScript或使用PHP的服務器完成。