在 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+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始
广告