Hur mäter man förfluten tid i Javascript?


UPPDATERING 2024:

performance.now() är det rekommenderade moderna tillvägagångssättet. https://stackoverflow.com/a/15641427/7414387


Jag skapade ett enkelt spel som startar och slutar timern när användaren slutar klicka på 16 rutor.

Jag vill mäta den gångna tiden för användaren att slutföra spelet. Hur gör jag det med Javascript?

Jag tittade på olika svar som detta, men jag hade svårt att förstå andras kod.

Jag skulle anta att det ser ut så här.

Timer Start: When user clicks the first box
Timer End: When user clicks the last box

Svar #1

Datumdokumentationen anger att:

JavaScript-datumet baseras på ett tidsvärde som är millisekunder sedan midnatt den 1 januari 1970, UTC

Klicka på startknappen och sedan på stoppknappen. Det kommer att visa dig antalet sekunder mellan de två klickningarna.

Millisekundsskillnaden finns i variabeln timeDiff. Lek med den för att hitta sekunder/minuter/timmar eller vad du behöver

var startTime, endTime;

function start() {
  startTime = new Date();
};

function end() {
  endTime = new Date();
  var timeDiff = endTime - startTime; //in ms
  // strip the ms
  timeDiff /= 1000;

  // get seconds 
  var seconds = Math.round(timeDiff);
  console.log(seconds + " seconds");
}
<button onclick="start()">Start</button>

<button onclick="end()">End</button>

ELLER ett annat sätt att göra det för moderna webbläsare

Att använda performance.now() som returnerar ett värde som representerar tiden som har förflutit sedan tidsursprunget. Detta värde är ett flyttal med mikrosekunder i decimaldelen.

Tidsursprunget är en standardtid som anses vara början på det aktuella dokumentets livslängd.

var startTime, endTime;

function start() {
  startTime = performance.now();
};

function end() {
  endTime = performance.now();
  var timeDiff = endTime - startTime; //in ms 
  // strip the ms 
  timeDiff /= 1000; 
  
  // get seconds 
  var seconds = Math.round(timeDiff);
  console.log(seconds + " seconds");
}
<button onclick="start()">Start</button>
<button onclick="end()">End</button>

Relaterade artiklar