javascript中两倍于百分比的差异

时间:2014-07-27 12:12:52

标签: javascript jquery date datetime

示例说:

var timeone = "01:23:00"; // time elapsed
var timetwo = "07:34:00"; // total time 
那么我怎样才能计算出总和之间的差异?经过的时间并取出它的百分比?

更新

试过这个,但在控制台中,我看到了" NaN"

var TimeLeft =  Date.parse(TimeLft.text())/100;
            console.log(TimeLeft);
            var Totaltime = Date.parse(DealTotalTm)/100;
            console.log(Totaltime);
            var percentChange = (TimeLeft/Totaltime)*100;

            console.log(percentChange);

3 个答案:

答案 0 :(得分:2)

由于您使用已用时间而非时间,因此我建议您避开Date对象。它用于不同的目的。

如果您可以保证输入采用您指定的hour:minute:second格式,则只需拆分部件即可将总秒数计算为单个整数。然后你可以将它们分开以获得百分比,如下所示:

function totalSeconds(time){
    var parts = time.split(':');
    return parts[0] * 3600 + parts[1] * 60 + parts[2];
}

var timeone = "01:23:00"; // time elapsed
var timetwo = "07:34:00"; // total time 
var pct = (100 * totalSeconds(timeone) / totalSeconds(timetwo)).toFixed(2);

我已将结果修改为两位小数,但您可以根据需要进行调整。

jsFiddle here

答案 1 :(得分:1)

"01:23:00"仅包含时间部分,不是可以使用Date.parse()

解析的有效格式

要使其正确解析,请在解析之前为虚拟日期部分添加前缀。

例如:Date.parse("01-01-2000 " + TimeLft.text())

由于您希望获得百分比值,因此您需要从结果中减去为日期部分(01-01-2000)添加的秒数:

var dayOffset = Date.parse("01-01-2000 00:00:00");
var left =  Date.parse("01-01-2000 " + TimeLft.text()) - dayOffset;
var total =  Date.parse("01-01-2000 " + DealTotalTm) - dayOffset;
var percentChange = (TimeLeft/Totaltime)*100;

答案 2 :(得分:1)

所有浏览器(IE lt 9)都没有正确支持Date.parse()中的第一个,因此我建议您使用Date对象.set*()函数。其次,由于您的时间没有任何日期,您需要根据当天的开始时间。这应该有效且浏览器安全http://jsfiddle.net/6q3WB/

var baseDate = new Date();
    timeElapsed = "01:23:00", // time elapsed
    timeElapsedParts = timeElapsed.split(':'),
    timeElapsedDate = new Date(),
    timeElapsedInMilliseconds = 0,
    timeTotal = "07:34:00", // total time
    timeTotalParts = timeTotal.split(':'),
    timeTotalDate = new Date(),
    timeTotalInMilliseconds = 0,
    timeDifferenceInPercentage = 0;

baseDate.setHours(0);
baseDate.setMinutes(0);
baseDate.setSeconds(0);
baseDate.setMilliseconds(0);

timeElapsedDate.setHours(timeElapsedParts[0]);
timeElapsedDate.setMinutes(timeElapsedParts[1]);
timeElapsedDate.setSeconds(timeElapsedParts[2]);
timeElapsedDate.setMilliseconds(0);

timeTotalDate.setHours(timeTotalParts[0]);
timeTotalDate.setMinutes(timeTotalParts[1]);
timeTotalDate.setSeconds(timeTotalParts[2]);
timeTotalDate.setMilliseconds(0);

timeElapsedInMilliseconds = (timeElapsedDate.getTime() - baseDate.getTime());
timeTotalInMilliseconds = (timeTotalDate.getTime() - baseDate.getTime());

timeDifferenceInPercentage = (Math.round(((timeTotalInMilliseconds - timeElapsedInMilliseconds) / timeTotalInMilliseconds) * 10000) / 100);

console.log(timeDifferenceInPercentage + '%');