示例说:
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);
答案 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);
我已将结果修改为两位小数,但您可以根据需要进行调整。
答案 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 + '%');