2016-06-09 17 views
0

爲什麼在比較兩個只隔幾秒鐘的日期時,我沒有得到一個零,而是從.getHours()得到一個「18」?Javascript .getHours()無法正常工作

下面是代碼:

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title></title> 
</head> 
<body> 
    <span id="test">starting...</span> 
    <script> 
     var a = document.getElementById("test"); 

     window.setInterval(myHourCheck, 1000); 

     var originalDate = new Date(); 

     function myHourCheck() { 
      var current = new Date(); 
      var original = originalDate; 
      var timeDelta = current.getTime() - original.getTime(); 

      var hours = new Date(timeDelta).getHours(); 

      a.innerHTML = hours; 
     } 
    </script> 
</body> 
</html> 

通過確認步進只有秒從original分開current

+0

'GETTIME()' - 'GETTIME()'將返回時間戳的差異,所以'2016年6月9日20:00:01 - 2016/06/09 20:00:00'將返回'1970/01/01 00:00:01'的時間戳1。 –

回答

0

new Date用你的本地時區構造一個Date對象。小時偏移將你搞砸了。

可以使用的方法UTC版本解決這個問題:

new Date(0).getUTCHours() === 0 
+0

非常好,謝謝。一旦堆棧溢出定時器允許我接受。 –