【问题标题】:How to measure time elapsed on Javascript? [duplicate]如何在 Javascript 上测量经过的时间? [复制]
【发布时间】:2020-07-02 20:13:39
【问题描述】:

我创建了一个简单的游戏,当用户完成点击 16 个框时开始和结束计时器。

我想测量用户完成游戏所用的时间。 我如何使用 Javascript 来做到这一点?

我看了不同的答案like this,但我很难理解别人的代码。

我会假设它看起来像这样。

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

【问题讨论】:

  • 以毫秒为单位存储用户开始的时间,然后在最后减去一个与另一个相减以毫秒为单位。我让你做一些研究,因为你似乎还没有做很多事情

标签: javascript


【解决方案1】:

Date 文档指出:

JavaScript 日期基于毫秒的时间值 自 1970 年 1 月 1 日午夜起,UTC

点击开始按钮,然后点击结束按钮。它会显示两次点击之间的秒数。

毫秒差异在变量timeDiff 中。用它来寻找秒/分钟/小时/或你需要的东西

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>

或者为现代浏览器做的另一种方式

使用performance.now() 返回一个值,该值表示自时间原点以来经过的时间。这个值是一个带有微秒小数的双精度值。

时间原点是一个标准时间,被认为是当前文档生命周期的开始。

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>

【讨论】:

  • 感谢您的友好回答!非常非常清晰易懂!我将使用它来应用到我的代码!
  • 这根本不可靠。在现代浏览器中,最好的办法是使用performance.now() 来测量两个瞬间之间的持续时间。在上面的答案中,将new Date() 替换为performance.now()developer.mozilla.org/en-US/docs/Web/API/Performance/now
  • @RodolfoCarvalho 您能否进一步解释一下为什么它根本不可靠?
  • SO上有类似的问题(这里标记为重复)。不幸的是,并非所有人都指向正确的方向。由于我无法添加答案,我想警告来这里的人。总之,使用new Date()是不可靠的,因为它受系统时钟的影响。它可能导致其他意外输出中的负持续时间。请参阅此答案以获得更长的咆哮stackoverflow.com/a/15641427。并查看developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 中关于计算经过时间的说明。
猜你喜欢
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
相关资源
最近更新 更多