在 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() 方法。

更新於: 2023 年 4 月 19 日

20K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告