2016-06-09 19 views
0

Warum bekomme ich nicht eine Null, sondern eine "18", von .getHours(), beim Vergleich zweier Daten, die nur durch Sekunden getrennt sind? HierJavascript .getHours() funktioniert nicht richtig

ist der Code:

<!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> 

durch bestätigt Stepping, dass nur Sekunden getrennt current von original.

+0

'GetTime()' - 'GetTime()' werden Sie den Zeitstempel Unterschied zurückkehren, so dass für '2016.06.09 20:00:01 - 2016/06/09 20: 00: 00' gibt den Zeitstempel 1 zurück, der der '1970/01/01 00: 00: 01' ist –

Antwort

0

new Date erstellt ein Date-Objekt mit Ihrer lokalen Zeitzone. Der Stundenversatz schraubt dich durcheinander.

Sie können dieses Problem umgehen, indem Sie die UTC-Versionen der Methoden verwenden:

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

Ausgezeichnet, danke. Will akzeptieren, sobald Stack Overflow-Timer mir erlaubt. –