【问题标题】:Calculating time elasped and putting it in Days:Hours:Minutes:Seconds format in javascript where time elapsed updates every second计算经过的时间并将其放入 JavaScript 中的 Days:Hours:Minutes:Seconds 格式,其中经过的时间每秒更新一次
【发布时间】:2019-06-02 22:01:45
【问题描述】:

我正在尝试计算设定日期时间对象和当前时间之间经过的时间。我希望它能够以这种格式 DD:HH:MM:SS 出现,其中 DD 是天,HH 是小时,MM 是分钟,SS 是秒。我能够获得总天数、总小时数、总分钟数和总秒数,但我不确定如何按照我想要的方式格式化它。请帮忙

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>timer</title>   
</head>
<body >
<div id ="time" name ="timer"></div>

<script>
var myVar = setInterval(myTimer, 1000);

function myTimer() {

  let seconds = 1000 ;
  let minutes = seconds * 60;
  let hours = minutes * 60;
  let days = hours * 24;
  let years = days * 365;


  const startDateTime = new Date("June 2, 2019 12:36:10 AM");
  const newDateTime = new Date();

  let timeDiff = newDateTime - startDateTime;

  let totalSeconds = Math.round(timeDiff/seconds);


  document.getElementById("time").innerHTML = totalSeconds;
}
</script>

</body>

</html>

【问题讨论】:

  • 你遇到过这个吗-momentjs.com 它为你做了所有的努力

标签: javascript datetime elapsedtime


【解决方案1】:

我建议你使用像 Moment.js 这样的库,但如果你想在纯 Javascript 中做到这一点,你可以用你已经定义的除法参数除以总秒数,然后用零填充它们不到十岁。

var myVar = setInterval(myTimer, 1000);

const seconds = 1000;
const minutes = seconds * 60;
const hours = minutes * 60;
const days = hours * 24;
const years = days * 365;

function myTimer() {
  const startDateTime = new Date("June 2, 2019 12:36:10 AM");
  const newDateTime = new Date();

  let elapsedMilliseconds = newDateTime - startDateTime;
  
  document.getElementById("time").innerHTML = 
  `${formatElapsedTime(elapsedMilliseconds, days)}:${formatElapsedTime(elapsedMilliseconds, hours, 24)}:${formatElapsedTime(elapsedMilliseconds, minutes, 60)}:${formatElapsedTime(elapsedMilliseconds, seconds, 60)}`;
}

function formatElapsedTime(elapsedtime, timeunit, base) {
  let time = base ? (elapsedtime / timeunit) % base : elapsedtime / timeunit;
  time = Math.floor(time);
  time = time < 10 ? '0' + time : time;
  return time;
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>timer</title>
</head>

<body>
  <div id="time" name="timer"></div>
</body>

</html>

【讨论】:

  • 谢谢。该函数格式化它,但它不能正确计算经过的时间
  • @user8964654 你说得对,我使用的是经过的秒数,而我应该使用经过的毫秒数。它现在应该可以按预期工作了。
  • 没问题!如果您的问题得到解决,您可以mark the answer as accepted 以便其他人知道问题已得到解答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多