【问题标题】:JavaScript calculate time and secondsJavaScript 计算时间和秒
【发布时间】:2015-01-26 09:21:22
【问题描述】:

我在尝试使用 JavaScript 执行某些计算逻辑时遇到了一些问题。基本上一条路线有80个台阶,走完整条路线大约需要9分钟。

所以我试图做一条自动路线,它会告诉你距离目的地还有多少分钟。我的逻辑如下:

9 * 60 / 80 = 6.75

所以基本上每一步都是 6.75 秒,但我想显示一个像 9 这样的整数,而不是 8.4 分钟。代码如下:

getAllBusLoc(function(busList) {           
            var totalBusLoc = busList.length;
            var busLeftPct = Math.round(parseFloat(busList.length) * 40 / 100)

            document.getElementById("busStopLeft").innerHTML = totalBusLoc;
            pointArr.forEach(function(coord,index){
                setTimeout(function(){

                    var travelTime = document.getElementById(travelDistMin").value;               
   moveNext(coord.x, coord.y);

                }, 1000* index);
            });
        });

我将旅行时间作为变量 travelTime,在本例中为 9 分钟。对于每一点,我想从 9 分钟减去 6.75 秒,并显示一个整数而不是 8.2。

有什么想法吗?

提前致谢。

【问题讨论】:

  • 让选民介意解释一下?
  • busList 数组的示例?
  • 其实和busList数组无关。它基本上是从 pointArr 循环步骤。对于每一步,我想减去总的 travelTime,即 9 分钟乘以 6.75 秒

标签: javascript math time seconds minute


【解决方案1】:

使用Math.round() 从 travelTime 中减去 6.75。 这将四舍五入到最接近的整数。

【讨论】:

  • 最好的答案总是你自己想出来的那个
【解决方案2】:

我可以建议的一个想法是编写一个通用函数,将十进制时间间隔(例如,8.25 分钟)转换为其等效的 'mm:ss' 值而不是四舍五入,以便显示精确的时间表示:

Number.prototype.toMMSS = function () { 
    d = this;
    var sign = d < 0 ? "-" : "";
    var min = Math.floor(Math.abs(d))
    var sec = Math.floor((Math.abs(d) * 60) % 60);
    return sign + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;
};

例子:

8.25.toMMSS()        // "08:15"

JSFiddle

或者,你可以试试 moment 插件 duration 函数,比如:

moment.duration(8.25, 'minutes').minutes(); // 8

或者,humanize 方法进行四舍五入:

console.log(moment.duration(8.51, "minutes").humanize()); // "9 minutes"
console.log(moment.duration(8.15, "minutes").humanize()); // "8 minutes"

【讨论】:

  • 谢谢我已经通过初始化两个变量来解决它,一个用于显示一个用于计算并使用 Math.round() 来实现它:)
  • 别担心,很高兴你找到了路
猜你喜欢
  • 2010-12-26
  • 2016-08-14
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多