Search code examples
javascriptjquerymillisecondschronometer

How to make a millisecond chronometer in Javascript?


I found how to make a clock with milliseconds in javascript (Jquery)(see snippet) but I can't figure out how to make a chronometer in milliseconds only. I tried to make a loop adding 1000 to the value of "milli" but my condition never works completely

// START CLOCK SCRIPT

Number.prototype.pad = function(n) {
  for (var r = this.toString(); r.length < n; r = 0 + r);
  return r;
};

function updateClock() {
  var now = new Date();
  var milli = now.getMilliseconds(),
    sec = now.getSeconds(),
    min = now.getMinutes(),
    hou = now.getHours(),
    mo = now.getMonth(),
    dy = now.getDate(),
    yr = now.getFullYear();
  var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
  var tags = ["mon", "d", "y", "h", "m", "s", "mi"],
    corr = [months[mo], dy, yr, hou.pad(2), min.pad(2), sec.pad(2), milli];
  for (var i = 0; i < tags.length; i++)
    document.getElementById(tags[i]).firstChild.nodeValue = corr[i];
}

function initClock() {
  updateClock();
  window.setInterval("updateClock()", 1);
}

// END CLOCK SCRIPT
body {background-color:#666;}

#timedate {
  font: small-caps bold 43px/150% Arial, Helvetica, sans-serif;
  text-align:left;
  width: 50%;
  margin: 20px auto;
  color:#333;
  border-left: 20px solid yellow;
  padding: 20px;
}
<body onLoad="initClock()">

  <div id="timedate">
    <a id="mon">January</a>
    <a id="d">1</a>,
    <a id="y">0</a><br />
    <a id="h">12</a> :
    <a id="m">00</a>:
    <a id="s">00</a>:
    <a id="mi">000</a>
  </div>


Solution

  • You can use the getTime function in Date API, it returns milliseconds number after 1970/01/01.

    function updateClock(initTime) {
      var now = new Date();
      var milli = now.getTime() - initTime;
      document.getElementById('timedate').innerHTML = milli;
    }
    
    function initClock() {
      var initTime = new Date().getTime();
      updateClock();
      window.setInterval(updateClock, 1, initTime);
    }