【问题标题】:Getting Time Remaining获得剩余时间
【发布时间】:2018-05-01 14:34:46
【问题描述】:

假设某事以每小时 5000 次的速度发生,但还有一些剩余(例如,为了 2500 次)。

我如何获得剩余的小时、分钟和秒数?

我想应该是这样的:

hour = floor(remaining / perHour)
mins = floor(remaining % perHour / 60)
secs = floor(remaining % perHour % 60)

但是,使用以下计算备份会返回不正确的金额。

time = hour + (mins / 60) + (secs / 60 / 60)
time * perHour // 3472.2 - not 2500

时间应该更短,所以我显然计算错了。如果有人解释我哪里出错了,我将不胜感激。

编辑:我知道这不是 Maths SE,但 Maths SE 应该是用于高级数学的,这是下一个最合适的。


想出了一个方法,但它可能不是最好的,所以我将把这个问题留一段时间。

hour = floor(remaining / perHour)
mins = floor(remaining / perHour * 60) - hour * 60
secs = floor(remaining / perHour * 3600) - mins * 60 - hour * 3600

【问题讨论】:

  • “编辑:我知道这不是 Maths SE,但 Maths SE 应该是用于高级数学的,这是下一个最合适的。” StackOverflow肯定不适合做这个。
  • 我投票结束这个问题,因为它是关于 Mathematics 而不是编程或软件开发。

标签: math


【解决方案1】:

我们的问题是还剩多少时间,我们知道这个过程的速度。不费吹灰之力,我们建立了一个速率(Items/minute, Items/sec)并将剩余元素的数量除以 rate。只要我们保持一致,我们就可以使用任何我们想要的时间单位——就我个人而言,我喜欢以每秒为单位的速率,因为Hz

演示

function getRemainingTime(remainingItems) {
  const processRatePerHour = 5000;
  const processRate = (processRatePerHour / 60 / 60); // 1.3888 per second

  remainingSeconds = remainingItems / processRate;
  
  return {
    hours: (remainingSeconds / 3600),
    minutes: (remainingSeconds / 60),
    seconds: remainingSeconds
  };

}

function showProgress(remainingItems) {
  var time = getRemainingTime(remainingItems);

  var list = document.createElement('ul');
  
  var processEnd = moment().add(time.seconds, 's');

  list.innerHTML = `
    <ul>
      <h3> With ${remainingItems} remaining, we will be finished ${processEnd.fromNow()}. </h3>
      <li> Hours Remaining: ${time.hours} </li>
      <li> Minutes Remaining: ${time.minutes} </li>
      <li> Seconds Remaining: ${time.seconds} </li>
    </ul>`;

  document.body.appendChild(list);

}

// Let's try it out!

showProgress(4999);
showProgress(2500);
showProgress(100);
body {
  font-family: 'Helvetica', sans-serif;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.2/moment.min.js"></script>

<h2> Please Accept My Answer v.0.2. </h2>

【讨论】:

  • 我试图以小时、分钟和秒为单位获取剩余时间。不是每秒的速率。请阅读问题或解释您的意思。
  • 我没有经过的时间。只是小时费率和剩余金额。
  • 更改了答案以反映。这可能比你想象的要简单。我们需要做的就是用剩余物品的数量除以费率。
  • 自豪地发布“请接受我的回答”的测试版,这是一个简单的香草 JS 应用程序,可以告诉您流程中还剩多少时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 2012-03-31
  • 1970-01-01
相关资源
最近更新 更多