在 JavaScript 中查詢經過的時間
有時,需要在 JavaScript 中執行某些操作時查詢經過的總時間。例如,我們需要查詢已更新其個人資料的使用者所經過的總時間。
此外,可能還有其他類似的用例,我們需要查詢特定時間和當前時間之間的差異,以查詢經過的總時間。在這裡,我們將學習在 JavaScript 中查詢經過時間的各種方法。
使用 Date() 物件在 JavaScript 中查詢經過的時間
在 JavaScript 中,我們可以使用 Date() 物件建構函式獲取當前時間。它返回自 1970 年 1 月 1 日以來的總毫秒數。
在這裡,我們可以獲取兩個日期的總毫秒數之差,以獲取兩個日期之間經過的時間。
語法
使用者可以按照以下語法使用 Date() 物件建構函式在 JavaScript 中查詢經過的時間。
let startTime = new Date(); let endTime = new Date(); let timeElapsed = endTime - startTime;
在上述語法中,首先我們獲取了開始時間。之後,我們獲取了結束時間。為了獲取經過的時間,我們獲取了開始時間和結束時間之間的差值。
示例 1
在下面的示例中,我們將當前時間儲存在 startTime 變數中。之後,我們呼叫 loopThrough() 函式。該函式執行迴圈 600,000 次。
函式執行完成後,我們將當前時間儲存在 endTime 變數中。之後,我們獲取 endTime 和 startTime 之間的差值,以獲取執行函式期間經過的總時間。
<html> <body> <h3> Using the <i> Date() object </i> to find the time elapsed in JavaScript </h3> <div id="output"> </div> <script> let output = document.getElementById('output'); function loopThrough() { for (i = 0; i < 600000; i++) { //Do nothing } } let startTime = new Date(); loopThrough(); let endTime = new Date(); let timeElapsed = endTime - startTime; output.innerHTML += "Total time elapsed to loop through 600000 times: " + timeElapsed + " milliseconds."; </script> </body> </html>
示例 2
下面的示例顯示了特定日期與當前時間之間的時差。之後,我們呼叫 formatDate() 函式以將日期格式化為天、小時、分鐘和秒格式。
在 formatDate() 函式中,我們獲取時差作為引數以及天、小時、分鐘和秒的總數。在輸出中,使用者可以檢查自 2019 年 12 月 31 日起經過的總時間。
<html> <body> <h3> Using the <i> Date() object </i> to find the time elapsed in JavaScript </h3> <div id="output"></div> <script> let output = document.getElementById('output'); function formatDate(difference) { //Arrange the difference of date in days, hours, minutes, and seconds format let days = Math.floor(difference / (1000 * 60 * 60 * 24)); let hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); let minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60)); let seconds = Math.floor((difference % (1000 * 60)) / 1000); output.innerHTML += "Total time elapsed is: " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds."; } let start = new Date("December 31, 2020 23:59:59"); let end = new Date(); let difference = end - start; formatDate(difference); </script> </body> </html>
使用 Console.time() 函式
console.Time() 方法將標籤作為引數。每當我們使用某個標籤呼叫 console.time() 方法時,它就開始計算時間。
console.timeEnd() 方法採用與我們作為 console.time() 方法引數傳遞的相同的標籤,並列印自呼叫 console.time() 方法以來的經過時間。
語法
使用者可以按照以下語法使用 console.time() 函式在 JavaScript 中查詢經過的總時間。
console.time(label); console.timeEnd(label);
在上述語法中,console.time() 和 console.timeEnd() 方法採用相同的標籤。
示例 3
在下面的示例中,首先,我們在傳遞“執行時間”標籤作為引數時執行 console.time() 方法。之後,我們呼叫迴圈 100,000 次。接下來,我們使用相同的標籤呼叫 console.timeEnd() 方法,並在控制檯中列印經過的總時間。
// use the console.time() function to find the time elapsed console.time('Execution time'); for (let i = 0; i < 100000; i++) { // Iterating through the loop } console.timeEnd('Execution time');
使用 Performance.now() 方法
使用者可以使用 performance.now() 方法獲取執行 JavaScript 程式碼期間經過的總時間。它以毫秒為單位返回經過的時間。
語法
使用者可以按照以下語法使用 performance.now() 方法在 JavaScript 中查詢經過的時間。
let startTime = performance.now(); let endTime = performance.now(); let timeElapsed = endTime - startTime;
我們在上述語法中獲取了開始時間和結束時間之間的差值。
示例 4
在下面的示例中,我們在 JavaScript 程式碼執行開始時使用了 performance.now() 方法。之後,我們使用 setTime() 方法設定 1000 毫秒的超時。
超時完成後,它將執行回撥函式,該函式將再次呼叫 performance.now() 方法並獲取 startTime 和 endTime 之間的差值以查詢經過的總時間。
<html>
<body>
<h3> Using the <i> performance.now() method </i> to find the time elapsed in JavaScript </h3>
<div id="output"></div>
<script>
let output = document.getElementById('output');
let startTime = performance.now();
setTimeout(function () {
let endTime = performance.now();
let timeElapsed = endTime - startTime;
output.innerHTML = 'Time elapsed: ' + timeElapsed + ' milliseconds';
}, 1000);
</script>
</body>
</html>
結論
使用者學習了三種在 JavaScript 中查詢經過時間的方法。第一種方法是使用 Date() 物件。第二種方法是使用 console.time() 和 console.timeEnd() 方法,該方法始終在控制檯中列印時間。第三種方法是使用 performance.now() 方法。